Как создать Телеграм-бот на 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/


Интересные статьи

Интересные статьи

В этой статье мы посмотрим на моем примере как создать игру в 3D иллюзией с помощью технологии RayCasting на связке Python + PyGame. Только тригонометрия и вычисления, никак движков.Все мы помним стар...
Почти все, с чем мы сталкиваемся в интернете, имеет отношение к API, а точнее к версиям этого программного интерфейса, использующим для работы HTTP-запросы. Когда мы хотим узнать прогноз погоды, интер...
В работе аналитика данных часто приходится использовать наборы данных, загружаемые из открытых источников. Рассмотрим простой пример использования конвейера для таких задач.ETL, сокращение от extract-...
Mito — это графический интерфейс для быстрой работы с наборами данных, который по вашим действиям создаёт код на Python. Даже если вы работаете с Python много лет, наблюдая за кодом Mito, вы можете уз...
Одним из современных архитектурных подходов в области облачных вычислений является, так называемый, Serverless. Этот способ запуска приложений в облаке освобождает разраб...