Ботостроение Telegram. Первый бот. Aiogram3 - полное руководство.
ฝัง
- เผยแพร่เมื่อ 7 ก.พ. 2025
- 📘 В этом видео мы создадим своего первого бота - почти как "Hello World!" 😉)
Научимся отвечать на сообщения пользователя, регистрировать хэндлеры, а также отвечать на сообщение с цитированием.
Aiogram - это мощный, но в тоже время простой инструмент для создания телеграм ботов. В этой серии видеоуроков я познакомлю тебя с его функционалом и в конце изучения для закрепления навыков мы напишем телеграм бота. Обязательно подпишись на канал, поставь лайк этому видео и выскажи свое мнение об этом видео в комментариях. Активируй колокол, чтобы не пропустить ни одного видео, которое со 100% вероятностью поможет тебе в изучении ботостроения!
🐍 Научись зарабатывать на Python - money-python.c...
🎯 Обязательно ознакомься с моими курсами, в которых мы с учениками работаем достаточно тесным, можно сказать, "семейным" составом.
Мы прокачаем твой скилл с "я ничего не понимаю в python" до "я умею писать шустрых, легких и стабильных телеграм ботов".
Никакой воды и видео по 40, а то и больше минут - только сжатая, сконцентрированная выжимка практики. Моя задача - дать вам продвинутые навыки простыми словами, которые сделают вас на голову выше всех остальных и уменьшить ваши времязатраты на разработку своих проектов или клиентских.
▶ Смотреть весь плейлист Aiogram - tinyurl.com/45...
▶ Смотреть весь плейлист Pyrogram - tinyurl.com/4b...
📢 Внимание!
Эти пакеты были перемещены, вы должны исправить импорт в вашем коде, если вы используете версию 3.0.0b4 и выше:
aiogram.dispatcher.filters ➡ aiogram.filters
aiogram.dispatcher.fsm ➡ aiogram.fsm
aiogram.dispatcher.handler ➡ aiogram.handler
aiogram.dispatcher.webhook ➡ aiogram.webhook
aiogram.dispatcher.flags/* ➡ aiogram.dispatcher.flags (модуль вместо пакета)
За структуру бота двойной лайк
да, за это лайк. передал свой опыт а не тупо пересказал документацию.
Так же хочу выразить благодарность. долго не мог найти человека, которого могу воспринимать по голосу, информации которую преподносят. У тебя все супер, жду других проектов) Всех благ
Очень ценно. Спасибо.
Не возможно оценить какую вы оказываете помощь для начинающих программистов, спасибо Вам!
спасибо за структуру проекта с 1 ролика! немного пока не разобрался в settings но думаю со временем дойдет
в топ! в топ! с двух каналов подписался и лайкнул. Большое спасибо!
Благодарю.
Спасибо тебе большое, прям от души, желаю только лучшего!
просто вау! под конец ролика челюсть отвисла, браво!
Не понимаю людей, которые вообще выписывают, что-то против автора! Если у тебя мозги на месте, то открываешь хотя бы тот же гитхаб и ищешь бота на aio3, разбираешься в чужом, залайканном проекте и вперёд, на крайняк в форумы по заходить. Ну а если 2 вариант, когда мозгов нет, то увы тут только работа на заводе поможет…)
Автор молодец, наверное лучшее, подробное и доходчивое объяснение в данном направлении. Желаю авторов успехов!
Спасибо. Рад что нравится.
Да вы вообще мега крутой супер красавчик! Такую работу проделали 💪🏻💪🏻💪🏻
Классный видос, буду смотреть дальше
Начал смотреть, и впал в ступор... Как запускается полинг если в start_polling() не передали объект бота? Оказывается нужно было до 5-й минуты досмотреть ))). автор молодец, хорошая подача, главное ничего лишнего, по делу и кратко
Прям молодец. Все нормально объяснил. Ни капли воды и все последовательно
Спасибо за теплые слова. Лайк, подписка? ;)
Здравствуйте! Хорошее четкое изложение без воды. В видео упоминается ссылка на код. Не нашел )
Быстро конечно, но актуально и в тему. Спасибо
Очень подробное объяснение и четкое изложение! Спасибо)
спасибо за видео. побольше бы
Рад, что нравится.
Отличный курс по aiogram-у, здорово, что сразу приучаете к разделению на файлы. Уважаю. Но в последнем моменте, когда выносим конфу из основного кода в файл input, у меня выдает ошибку "Возникло исключение: EnvError
Environment variable "TOKEN" not set" При чем не важно, есть этот файл или нет его, результат один. Перепроверил все несколько раз, все сделано верно, точно по видео. Помогите, что это может быть...
решил
@@ZuberMVКак? Столкнулся с такой же проблемой
@@ZuberMV Подскажи как пожалуйста
@@ZuberMV Прошу объяснить, пожалуйста
Было бы еще не плохо объяснения давать зачем какую конструкцию и функцию используем))
Слушать нужно уметь.
хороший материал
Udachi bro
А если в google colab делать то код такой же? Библиотеку я поставил вроде все хорошо, самого бота тож создал
классное видео, я на джава пишу ботов) но все равно познавательно, на питоне мне кажется это легче)
Почему у тебя при созданий логинга сразу появился формат и при созданный файлов в них были файлы типа __init__.py это из-за старого pycharm или я что-то не понимаю?
Сломал мозг...
Traceback (most recent call last):
File "\main.py", line 6, in
from core.settings import settings
File "\core\settings.py", line 28, in
settings = get_settings('input')
File "\core\settings.py", line 22, in get_settings
bot_token=env.str("TOKEN"),
File "\venv\lib\site-packages\environs\__init__.py", line 116, in method
raise EnvError('Environment variable "{}" not set'.format(proxied_key or parsed_key))
environs.EnvError: Environment variable "TOKEN" not set
Укажи путь до файла с токеном.В settings = get_settings(тут путь)
еееемаеее...... чувааак ты меня с этой болванкой в конце вообще запутал , лабиринт из фаилов , жооско.
все вроде работает все получилось , само видео максимально информативное , похоже я теперь твой подписчик, но некоторые вещи конечно оказались не так просты , фаил input лежит вне директории core? верно?
Да, input находится вне директории core
Спасибо большое!!!
Не за что. Лайк, подписка?
что делать при ошибке This error originates from a subprocess, and is likely not a problem with pip.
10:19. «return Settings» - ошибка. «'return' outside of function». При попытке загрузить тоже выдает ошибки. В интернете нет нормальной и понятной информации.
return за функцией написан скорее всего.
@@nztcoder Не понимаю к сожалению. Не смог загрузить бота. Остановился на этом моменте. Загружаю пакеты, они не устанавливаются, хотя пишет что успешно загружено
Такое чувство что главная цель была не научить а просто сделать что-то типа миниобзора основного курса, который уже покупается за деньгу. Слишком быстрая подача, нет толкового объяснения что и для чего делается. Уверен, что половина людей посмотрят, подумают что это слишком сложно и никогда не вернутся к изучению ботостроения. Чисто мое субъективное мнение
Так уверен или всё-таки субъективное мнение?
@@nztcoder В своем субъективном мнении я уверен
Ну конечно. Это ж субъективщина.
я сним согласен не понятно че да как и можно было бы сделать основные функции в пару видео а вы их растянули@@nztcoder
@@nztcoderон уверен, что половина людей посмотрят и никогда не вернутся к ботостроению
По поводу твоей подачи - его субъективная оценка)
Где можно найти код к урокам?
Можно, пожалуйста, выложить исходный код, чтобы можно было почитать.
Код подскажет бот в телеграм канале. Или nztcoder.com
Подскажите, а как разрабатывать ботов если Ваша библиотека аиограм отличается от нынешней биологически?
Например, сейчас как я понял, не нужно никаких регистрации хэндлеров делать
Можно декораторами, можно регистрацией хэндлеров. Принцип не поменялся.
8:38. «from aiogram import Bot» - Серым цветом. Это нормально?
Серым только если не используется
@@nztcoder Да. Но у вас было использовано. А код одинаковый. 3 раза переделывал🤔
как быстро меняется фрэймворк - DeprecationWarning: Passing `parse_mode`, `disable_web_page_preview` or `protect_content` to Bot initializer is deprecated. This arguments will be removed in 3.5.0 version
Use `default=DefaultBotProperties(...)` instead.
почему не используете декораторы? регистрация это длиннее и запутаннее
Тут уже вкусовщина. В следующих уроках есть и декораторы.
Подскажите, почему обычно используют хэндлеры прямо над функцией, а вы её регистрируете, в чём разница и для чего?
Никакой разницы. Кому как удобнее. Мне удобно видеть хэндлеры и их порядок в одном месте. Кому то удобнее использовать декораторы.
почему может не импортироваться environs?
Не установлен.
Привет, кодер, а налоги нужно будет платить если брать не тестовый, просто там ИНН просит при регистрации
Да. Нужно будет.
3 версия еще актуальна
а почему нельзя просто поместить переменные окружения в .env и ссылаться на них, вместо написания нескольких классов?
Можно и так. Как удобно.
Привет NZTCODER! отличный контент спасибо! Вопрос: при написании бота скрываю всю персональную информацию в виртуальном окружении. При работе на локальном компьютере в PyCharm все работает. При запуске на VPS записанные данные из виртуального окружения видны, но бот их почему-то не цепляет. Если вывести принтом в теле бота данные видны.
Проверьте - bot = Bot(token=settings.bots.bot_token, parse_mode='HTML')
Добрый день! В aiogram2 можно было скипать апдейты, прописав dp.start_polling(bot, skip_updates=True). В aiogram3 такое есть?
перед стартом поллинга добавляешь "await bot.delete_webhook(drop_pending_updates=True)"
Добрый день, всё работает, но, когда останавливаешь бот - вылетает куча ошибок, типа: "During handling of the above exception, another exception occurred". Это нормально?
if __name__ == '__main__':
dp.run_polling(bot)
Так всё ок. "Спасибо" за помощь.
С чем может быть связанна подобная ошибка:
Добрый день какая версия питона установлена у меня пакет pip install environs не устанавливается не как может можно вручную как то установить
Здравствуйте, на версии 3.9.1 и 3.11 работает 100%
смотри в сторону pip
Токен откуда взяли?
Лучше последовательно смотреть весь плейлист по aiogram -> th-cam.com/play/PLRU2Gs7fnCuiwcEDU0AWGkSTawEQpLFPb.html
Токен получали в этом видео -> th-cam.com/video/NPO-N9Hc7_s/w-d-xo.html
Какую версию пайчама используете?
2022.1
Я ошибку решил у кого такая ошибка будет установите pip version 22.0.4 и все
Отлично!
как скачать pycharm бесплатную версию
Тут www.jetbrains.com/ru-ru/pycharm/download/?section=windows
Скачивай community версию
спасибо. очень понятно, мне нужно написать бота который будет разсылать пользователям из БД больше 1000 пользывателей за один сеан, надеюсь твои видео мне помогут
почему бы id, token не хранить в .py файле ? Просто кинуть его в игнор гита
Можно и так, да. Тут уже как удобно.
th-cam.com/video/sOisrGnB2z4/w-d-xo.html : первая запись лога: "Poling" с одной "l". Я так понимаю, это ошибка не автора руководства
Да, это в аиограм. Не критично :)
Все работало прекрасно, пока не начали раскидать все по ебучим папкам. В каждой ошибка подключения.
Никаких объяснений/пояснений, только код. Поищу другое руководство.
Ничего не говори, просто уходи.
@@nztcoderУшёл уже. Просто высказал мнение.
такую ошибку выдает
Traceback (most recent call last):
File "X:\pythonProject1\main.py", line 3, in
from core.handlers.basic import get_start
ModuleNotFoundError: No module named 'core'
Не отрабатывает функция остановки бота, то есть не приходит уведомление. В чем может быть дело?
async def stop_bot(bot:Bot):
await bot.send_message(settings.bots.admin_id, text="Бот остановлен")
Ctrl + C
ты смог решить проблемму?? просто у меня такая же(
@@keynch6982 спустя год повторил все, что показано в видео, и все (о чудо!!!) отработало как надо :)
@@keynch6982да
К сожаленью тоже так и смог получить ответ о прекращении работы бота. С стартом все ок. Aiogram 3.4. Запускаю в VSCODE. Если есть решение данной задачи, буду признателен!
Traceback (most recent call last):
File "C:\Users\user\PythonProjects\aiogram_lesson\aiogram.py", line 1, in
from aiogram import Bot, Dispatcher, types
File "C:\Users\user\PythonProjects\aiogram_lesson\aiogram.py", line 1, in
from aiogram import Bot, Dispatcher, types
ImportError: cannot import name 'Bot' from partially initialized module 'aiogram' (most likely due to a circular import) (C:\Users\user\PythonProjects\aiogram_lesson\aiogram.py) мне так пишется что делать
у меня не получается получить, ответ о запуске и остановки бота, dp.start_up.register, нет такого. и выдает ошибку если просто ручками прописать.
Возможно версия аиограма 2, нужна 3
@@nztcoder спасибо, поставил 3,06 - запустилось, а то вчера весь вечер искал гайд почему не работает код.
К сожаленью тоже так и смог получить ответ о прекращении работы бота. С стартом все ок. Aiogram 3.4. Запускаю в VSCODE. Если есть решение данной задачи, буду признателен!