В данной статье я покажу, как создать простого телеграм бота на Python. В нашем проекте мы будем использовать библиотеку "aiogram".
Подготовка.
Начнем с импорта всего необходимого.
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
После того как мы импортировали все, можно переходить к регистрации бота. Делается это очень легко, нужно просто получить токен в боте "BotFather". Для этого просто найдите данный бот ,после чего выберите пункт "new bot". Когда мы получили токен, нам надо связать его с проектом. Делается это очень легко.
bot = Bot(token='#токен')
dp = Dispatcher(bot)
Теперь мы сможем взаимодействовать с нашим ботом.
Первая команда для бота.
После того как мы получили возможность взаимодействовать с нашим ботом, предлагаю добавить приветствие. Делается это так.
@dp.message_handler(commands=['start']) #указываем команду(/start)
async def process_start_command(message: types.Message):
await message.reply("Привет!")
Но просто так у нас ничего не получится, для запуска работы бота необходимо написать еще пару строк.
if __name__ == '__main__':
executor.start_polling(dp)
Все, наш бот теперь сможет нас приветствовать. После того как мы напишем "/start" , бот нам ответит.
Таких команд вы можете делать очень много.
Эхо-бот.
Эхо-бот будет отвечать нам сообщениями, которые мы ему написали. Делается он так.
@dp.message_handler()
async def echo_message(message: types.Message):
await bot.send_message(message.from_user.id, message.text)
Создание кнопок.
Теперь можно перейти к более важным вещам. Сейчас я расскажу , как создать кнопки, которые будут облегчать взаимодействие с ботом. Для начала нам необходимо кое-что достать из библиотеки.
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton, ReplyKeyboardMarkup
Это позволит нам создавать кнопки(клавиатуру), которая будет заменять написание команд вручную.
Начнем с создания меню. После я покажу, как создать инлайн клавиатуру.
main = ReplyKeyboardMarkup(resize_keyboard=True)
main.add('HELP').add('HELLO') #добавляем кнопки
Теперь мы должны добавить их в наш бот. Для этого мы добавим его в команду "/start", чтобы бот выдавал нам это меню.
@dp.message_handler(commands=['start'])
async def process_start_command(message: types.Message):
await message.reply('Привет!', reply_markup=main)
Теперь после запуска бот выдаст нам меню, с которым мы сможем взаимодействовать. Но сейчас кнопки не будут реагировать. Для того чтобы они могли что-то выполнять прописываем такой код.
@dp.message_handler(text="HELP") #указывем кнопку
async def process_start_command(message: types.Message):
await message.reply("Потом сделаю")
@dp.message_handler(text="HELLO")
async def process_start_command(message: types.Message):
await message.reply("Я просто скажу привет")
Теперь после нажатия на эти кнопки вы будете получать сообщения от бота.
Можно переходить к созданию инлайн клавиатуры.Начнем с написания кнопок. Делается это примерно как и создание кнопок для меню.
catalog_list=InlineKeyboardMarkup(row_width=2) # указываем кол-во кнопок на одной строке
catalog_list.add(InlineKeyboardMarkup(text='Хабр',url='https://habr.com/ru/all/'),
InlineKeyboardMarkup(text='Функции', callback_data='button2'),
InlineKeyboardMarkup(text='ABOUT', callback_data='button3'))
Теперь сделаем обращение к ним. Я хочу подключить данную клавиатуру к кнопкам меню,чтобы после нажатия на них , я получал её и мог с ней взаимодействовать. Для этого переделаю кнопку "HELP"
@dp.message_handler(text="HELP")
async def process_start_command(message: types.Message):
await message.reply(f'Выбери,что тебе надо.', reply_markup=catalog_list)
Теперь после нажатия кнопки "HELP" мы будем получать клавиатуру, с которой сможем взаимодействовать.
Заключение.
Данная статья была написана для введения в создание Телеграм-ботов, для начинающих, поэтому она вряд-ли будет полезна для опытных программистов. Если будут какие-либо замечания к коду, напишите в комментариях.
Комментарии (5)
densss2
28.07.2023 15:03Господи, вот зачем тысячный раз писать то, что давным-давно было написано кучей других авторов и гуглится за десять секунд? Зачем использовать библиотеку, у которой авторы постоянно ломают API и что работало в одной версии - нихрена не заведётся в следующей?
Z55
28.07.2023 15:03"Следующая версия", это третья. Она на стадии "бета", поэтому могут быть небольшие изменения между версиями. Во второй версии всё работает стабильно.
Sheptyakov
28.07.2023 15:03+1Статей, где показывается, как сделать бота, который отвечает на сообщения или на тык по кнопкам, много, не хватает какого-то осмысления материала, собственного опыта, каких-то необычных примеров, бизнес-смысла... Да чего угодно, кроме просто описания.
Dr_Mike
28.07.2023 15:03-1Статью оригинальной назвать сложно, разве что раньше не встречал такую библиотеку для бота. Значит польза для новичков уже есть!
crispart
Астрологи объявили неделю телеграм-ботов. Что ни день, то одна и та же статья, только разными словами)