Всем привет. Как вы помните, в одной из прошлых статей я говорил, что первым языком лучше выбрать пайтон. Но вместо бесконечной теории лучше чтобы была бесценная практика. Откуда же ее взять? Один из вариантов - писать ботов. Сегодня мы напишем бота, который будет в ответ на команды отвечать что-либо. Прочитав эту статью вы сможете создать своего первого бота для Телеграма, который будет отвечать что угодно на любые команды.
Итак, сначала мы ищем в телеграме BotFather и там пишем /newbot
Сразу после этого пишем отображаемое имя бота. Оно может быть любым. После пишем как бы имя аккаунта бота. Оно пишется беспрерывно, разделяется подчеркиванием и должно заканчиваться на _bot
После всех манипуляций мы получает это
Кстати, бота зовут @Test_Fake_Of_Python_Bot, а токен я дарю кому-то из вас xD
Короче к делу.
Для начала в консоли пишем:
pip install aiogram
На Windows
pip3 install aiogram
На MacOS или Linux
Далее создаем файл и в начале пишем шаблонный текст:
import aiogram
from aiogram import Bot, Dispatcher, executor, types
TOKEN = 'Тут токен'
bot = Bot(token=TOKEN)
dp = Dispatcher(bot)
Этот текст мы больше вообще не будем трогать. В поле TOKEN поставьте между кавычками свой токен
Получилось так:
Теперь мы пишем снова шаблонный текст:
@dp.message_handler(commands="command")
async def answer_test(message: types.Message):
await message.answer("Answer")
В поле "command" мы пишем команду, которая будет писаться через "/"
В поле 'Answer' мы пишем ответ, который бот будет выдавать. Рассмотрим два варианта
@dp.message_handler(commands="answer")
async def answer_test(message: types.Message):
await message.answer("Это простое сообщение")
@dp.message_handler(commands="reply")
async def answer_test(message: types.Message):
await message.answer("Это ответ на сообщение")
Мы запускаем бота и... И ничего. Почему так? Да потому что наш бот не знает, что ему делать с данными.Давайте подскажем ему. В конце файла пишем:
if __name__ == "__main__":
executor.start_polling(dp, skip_updates=True)
Я поставил skip_updates в значение True, потому что мой бот не работает с важной информацией, такой как паспортные данные, данные банковских карт и т.п. Если ваш бот работает с чем-то подобным - ставьте False
Если мы в консоли видим строчку "Updates were skipped successfully.", то все ок. Если видим что-то подобное - тоже ок. Если видим заново поле ввода - то не ок. Так, проверим бота:
Так, видим что-то не то. Видите, бот не отвечает на сообщение, а просто пишет ответ? Дело в том, что во втором варианте вам надо answer заменить на reply
@dp.message_handler(commands="reply")
async def answer_test(message: types.Message):
- await message.reply("Это ответ на сообщение")
Пересоберем бота и...
Видите, сверху я допустил ошибку. Вы тоже будете их допускать не только в начале, но и в конце. Профессионал - не тот, кто не допускает ошибок, а тот, кто умеет с ними справляться. Как видите - все работает.
На этом вижу смысл завершить данную статью. Завтра выйдет вторая часть, где я расскажу еще о нескольких функциях данного модуля и телеграм ботов. Надеюсь, завтра без токена я еще не останусь xD
Спасибо что прочитали, допускайте и исправляйте ошибки. С вами был Fakeminer и Да прибудет с вами программирование, друзья!
[Самореклама] Псс... Чувак? Хочешь научиться делать на Python приложения с интерфейсом? Тогда переходи по ссылке и научись делать интерфейсы на Python всего за 15 минут!