2025-03-07 15:07:23 +07:00
2025-03-07 15:07:23 +07:00
2025-03-07 15:07:23 +07:00
2025-03-05 23:11:10 +07:00

Туториал по tg_bot и aiogram-3

Все проводится по гайду

Установка виртуального окружения venv и версионности git

инициализируем git

git init

установим виртуальную среду venv в папку venv

python -m venv venv

запишем в файл зависимостей первую запись для установки aiogram

echo "aiogram<4.0" > requirements.txt

добавим туда же pydantic-settings

echo "pydantic-settings" >> requirements.txt

активируем виртуальную среду

source venv/bin/activate

для выхода из venv можно использовать:

deactivate

Добавим файл .gitignore и файл с секретами .env (.env - укажем в .gitignore)

# Игнорирование виртуальной среды Python
venv/
.venv/
myenv/

#Игнорирование рабочих каталогов
bin/
include/
lib/
lib64/

# Игнорирование файлов с окружением
.env
.gitignore
pyvenv.cfg


# Игнорирование скомпилированных файлов Python
__pycache__/
**/__pycache__/

Установим наконец наши зависимости

pip install -r requirements.txt 

Первый бот

import asyncio
import logging
from aiogram import Bot, Dispatcher, types
from aiogram.filters.command import Command

# Включаем логирование, чтобы не пропустить важные сообщения
logging.basicConfig(level=logging.INFO)
# Объект бота
bot = Bot(token="12345678:AaBbCcDdEeFfGgHh")
# Диспетчер
dp = Dispatcher()

# Хэндлер на команду /start
@dp.message(Command("start"))
async def cmd_start(message: types.Message):
    await message.answer("Hello!")

# Запуск процесса поллинга новых апдейтов
async def main():
    await dp.start_polling(bot)

if __name__ == "__main__":
    asyncio.run(main())

Создадим файл конфигурации и переопределим файл секретов в него

Итак, создадим рядом с bot.py отдельный файл config_reader.py о следующим содержимым

config_reader.py

from pydantic_settings import BaseSettings, SettingsConfigDict
from pydantic import SecretStr


class Settings(BaseSettings):
    # Желательно вместо str использовать SecretStr 
    # для конфиденциальных данных, например, токена бота
    bot_token: SecretStr

    # Начиная со второй версии pydantic, настройки класса настроек задаются
    # через model_config
    # В данном случае будет использоваться файла .env, который будет прочитан
    # с кодировкой UTF-8
    model_config = SettingsConfigDict(env_file='.env', env_file_encoding='utf-8')


# При импорте файла сразу создастся 
# и провалидируется объект конфига, 
# который можно далее импортировать из разных мест
config = Settings()

Теперь немного отредактируем наш bot.py:

# импорты
from config_reader import config

# Для записей с типом Secret* необходимо 
# вызывать метод get_secret_value(), 
# чтобы получить настоящее содержимое вместо '*******'
bot = Bot(token=config.bot_token.get_secret_value())
Description
Туториал бота на Aiogram3
Readme 78 KiB
Languages
Python 99.7%
Dockerfile 0.3%