commit 5c189d248674cdfda372965d530540af981fade1 Author: vasilytray Date: Wed Mar 5 23:11:10 2025 +0700 first_tg_bot_tutorial diff --git a/README.md b/README.md new file mode 100644 index 0000000..8eedfc4 --- /dev/null +++ b/README.md @@ -0,0 +1,87 @@ +# Туториал по tg_bot и aiogram-3 +[Все проводится по гайду](https://mastergroosha.github.io/aiogram-3-guide/) + +## Установка виртуального окружения venv и версионности git +инициализируем git +``` +git init +``` +установим виртуальную среду **venv** в папку **venv** +```sh +python -m venv venv +``` +запишем в файл зависимостей первую запись для установки **aiogram** +```sh +echo "aiogram<4.0" > requirements.txt +``` +добавим туда же **pydantic-settings** +```sh +echo "pydantic-settings" >> requirements.txt +``` +активируем виртуальную среду +```sh +source venv/bin/activate +``` +для выхода из **venv** можно использовать: +``` +deactivate +``` +Добавим файл .gitignore и файл с секретами .env (.env - укажем в .gitignore) + +```sh +# Игнорирование виртуальной среды Python +venv/ +.venv/ +myenv/ + +#Игнорирование рабочих каталогов +bin/ +include/ +lib/ +lib64/ + +# Игнорирование файлов с окружением +.env +.gitignore +pyvenv.cfg + + +# Игнорирование скомпилированных файлов Python +__pycache__/ +**/__pycache__/ + +``` + +Установим наконец наши зависимости + +``` +pip install -r requirements.txt +``` + +## Первый бот + +```py +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()) +``` \ No newline at end of file diff --git a/bot.py b/bot.py new file mode 100644 index 0000000..36900aa --- /dev/null +++ b/bot.py @@ -0,0 +1,23 @@ +import asyncio +import logging +from aiogram import Bot, Dispatcher, types +from aiogram.filters.command import Command + +# Включаем логирование, чтобы не пропустить важные сообщения +logging.basicConfig(level=logging.INFO) +# Объект бота +bot = Bot(token=os.getenv("BOT_TOKEN")) +# Диспетчер +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()) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..0a175a6 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,9 @@ +# FastAPI и зависимости + +pydantic-settings==2.7.1 + +# Aiogram для бота +aiogram==3.17.0 + +# Dotenv для работы с окружением +python-dotenv \ No newline at end of file