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


  1. crispart
    28.07.2023 15:03
    +1

    Астрологи объявили неделю телеграм-ботов. Что ни день, то одна и та же статья, только разными словами)


  1. densss2
    28.07.2023 15:03

    Господи, вот зачем тысячный раз писать то, что давным-давно было написано кучей других авторов и гуглится за десять секунд? Зачем использовать библиотеку, у которой авторы постоянно ломают API и что работало в одной версии - нихрена не заведётся в следующей?


    1. Z55
      28.07.2023 15:03

      "Следующая версия", это третья. Она на стадии "бета", поэтому могут быть небольшие изменения между версиями. Во второй версии всё работает стабильно.


  1. Sheptyakov
    28.07.2023 15:03
    +1

    Статей, где показывается, как сделать бота, который отвечает на сообщения или на тык по кнопкам, много, не хватает какого-то осмысления материала, собственного опыта, каких-то необычных примеров, бизнес-смысла... Да чего угодно, кроме просто описания.


  1. Dr_Mike
    28.07.2023 15:03
    -1

    Статью оригинальной назвать сложно, разве что раньше не встречал такую библиотеку для бота. Значит польза для новичков уже есть!