Как создать Телеграм-бот на Python

от автора

В данной статье я покажу, как создать простого телеграм бота на 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/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *