В данной статье я покажу, как создать простого телеграм бота на 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» мы будем получать клавиатуру, с которой сможем взаимодействовать.
Заключение.
Данная статья была написана для введения в создание Телеграм-ботов, для начинающих, поэтому она вряд-ли будет полезна для опытных программистов. Если будут какие-либо замечания к коду, напишите в комментариях.
ссылка на оригинал статьи https://habr.com/ru/articles/751126/
Добавить комментарий