Хабр как написать Телеграм бота

В этой инструкции разберем процесс создания простого бота-ремайндера, единственная задача которого — напоминать пользователю о важных делах. Это базовая конструкция, которую можно усложнять и менять под свои потребности.

Инструкция подойдет для новичков, которые знают Python на базовом уровне, пробовали писать код и установили на компьютер редактор кода.

Первый этап: подготовка проекта и развертывание окружения

Найдем в поиске Telegram BotFather — официального бота мессенджера, который создает другие боты и управляет ими. В интерфейсе выбираем /start, затем — /newbot, и следом задаем имя и адрес. В этой инструкции это будут Elbrus Reminder и elbrus_reminder_bot соответственно.

После этого шага BotFather пришлет сообщение с токеном и ссылкой на бот:

Токен нужно хранить в безопасном месте — он дает контроль над ботом. и, как следствие, позволяет получить доступ к данным пользователей.

На время закроем Telegram и создадим на компьютере папку с именем проекта: например, reminder_bot. Откроем папку в среде разработки и создадим рабочий файл с понятным названием — bot.py.

Бот парсер. Теперь я знаю о всех задачах с сайтов Kwork и Habr. Ссылка на GitHub в описании.

Откроем терминал редактора кода и создадим для проекта новое окружение. В среде разработки с помощью команды python -m venv .venv создадим папку с окружением .venv .

Если окружение не активировалось автоматически, можно сделать это вручную, прописав путь к файлу активации в формате source .venv/bin/activate , где source — команда языка программирования Bash. Другой вариант — перезапустить среду разработки. Он работает для Visual Studio Code, но нужно предварительно принять предложение редактора привязать среду к папке проекта сразу после создания окружения.

Практика создания нового окружения под каждый проект позволяет повыстить безопасности и стабильность проекта — в окружении вы можете использовать только те библиотеки и их версии, которые требуются в проекте. Если в проекте появятся дополнительные функции, все изменения будут храниться в этом окружении. При этом оно будет изолировано от других окружений и проектов — это повысит безопасность проекта.

Второй этап: подключаем библиотеки

Проект создан и окружение готово: пора переходить к написанию кода. По правилам хорошего тона в первую очередь через import добавляем несколько предустановленных библиотек Python. При создании бота нам пригодятся logging и time , которые отвечают за определение времени и логирование сообщений.

import time import logging

Затем добавим асинхронную библиотеку aiogram, на основе которой будет работать бот. Она, например, определяет, какое сообщение пришло, как его нужно обработать и какие порты нужны. Сначала устанавливаем ее через терминал командой pip install aiogram , а в редакторе кода пишем следующее:

Еще по теме:  Почему не работают комментарии в Телеграмм канале

from aiogram import Bot, Dispatcher, executor, types

Из этой библиотеки нам нужны только отдельные модули и классы — все ее возможности для создания базовой версии бота не пригодятся. Поэтому вместо одиночного import использована команда from <> import <> .

Когда библиотеки импортированы, создадим переменные с токеном бота и сообщением, которое он будет отправлять пользователю. Вы можете заменить это сообщение на любое другое, которое вам необходимо. Это статические переменные, поэтому их имена написаны капслоком:

TOKEN = «здесьбудетваштокенот от BotFather» MSG = «Программировал ли ты сегодня, <>?»

Токены, ключи и прочие данные для настройки проекта лучше загружать более безопасным способом (например, создавать переменные окружения или файлы конфигурации). Но в данном случае сделаем все в одном файле для наглядности, а примеры более безопасной работы с такими переменными разберем в следующих постах.

Теперь создадим экземпляр класса Bot , передав ему в качестве аргумента наш токен, и экземпляр класса Dispatcher (dp), который в качестве аргумента получит bot . В результате получаем связку объекта класса bot с ключем, который привязан к боту, и диспетчера, который привязан к этому боту:

bot = Bot(token=TOKEN) dp = Dispatcher(bot=bot)

Следующим шагом добавим конструкцию под названием декоратор ( massage_handler ) — она помогает получить из диспетчера нужный функционал. В качестве аргумента прописываем команды, которые обрабатывает декоратор — в данном случае это команда /start , которая запускает бот.

Под декоратором прописываем функцию, которая будет обрабатывать команду /start и определяет логику, в соответствии с которой будет работать бот. Поскольку мы работаем с асинхронной библиотекой, функция тоже должна быть асинхронной. Для этого перед указанием def добавим ключевое слово async :

async def start_handler(message: types.Message):

Функция приветствует пользователя и обрабатывает сообщение, которое он отправляет в ответ. Из сообщения можно получить информацию о пользователе, который его прислал, время отправки и его ID.

Создаем переменную и сохраняем в ней user id :

user_id = message.from_user.id

Затем получаем из сообщения короткое и полное имя пользователя:

user_name = message.from_user.first_name user_full_name = message.from_user.full_name

Для того, чтобы в логах отображалась информация о пользователе, передаем в виде текста ID и полное имя, а также используем возможности библиотеки time , чтобы определить время, когда писал пользователь:

logging.info(f’ ‘)

Здесь отойдем в сторону и проверим корректность работы модуля time . Сделать это можно в терминале: для этого напишем import time , а затем — time.asctime .

Вернемся к коду. Поскольку функция, которую мы используем, асинхронна, вместо обычного для функций return используем await :

await message.reply(f»Привет, !»)

Ответить пользователю в боте можно несколькими способами — в данном случае используем reply. Выше в переменной MSG мы задали стандартное сообщение: «Программировал ли ты сегодня, <>?». Зададим частоту напоминаний: семь раз каждые семь суток (60х60х24 — количество секунд в одних сутках) с момента отправки команды /start боту от пользователя:

Еще по теме:  Как найти автора Телеграмм канала

for i in range(7): await asyncio.sleep(60*60*24)

Затем настроим отправку сообщения с указанием имени пользователя в этом же цикле:

await bot.send_message(user_id, MSG.format(user_name))

Третий этап: финал

Переходим к финальной части: в конце скрипта напишем несколько строк. Они могут показаться странными для новичка, но это общепринятая практика, к которой многие программисты прибегают при разработке. В этой строке мы проверяем, равна ли переменная __name__ строке «__main__» . Это условие всегда будет True, если мы запускаем этот файл как python-скрипт через терминал:

if __name__ == ‘__main__’:

Теперь делаем нашего бота доступным в сети:

executor.start_polling(dp)

Сохраняем файл. Запускаем бота в терминале, открытом в папке проекта, с помощью команды python bot.py .

Вернемся в BotFather и перейдем по ссылке, которую получили вместе с токеном. Нажимаем «Начать» — готово, бот, написанный меньше, чем в 30 строк, работает.

Так выглядит его код целиком:

В следующий раз подробно расскажем, как написать подобный бот на языке программирования JavaScript. Подписывайтесь, чтобы не пропустить инструкцию.

Катрин Алимова

Катрин Алимова

Вам может также понравиться.

Скрипты async, defer и оптимизация

Скрипты async, defer и оптимизация

Пишем нашу первую сопрограмму

12 сент. 2023 г.

Пишем нашу первую сопрограмму

Основы блокчейна на примере написания криптовалютного кошелька. Часть 2

21 авг. 2023 г.

Источник: elbrusboot.camp

Создание телеграм бота с помощью Python

телеграм бот

Как создать телеграм бота практически с неограниченным функционалом. Если вы знаете Python — то это будет несложно!

Какую библиотеку выбрать?

Одной из лучших библиотек Python для работы с Telegram является aiogram. Она предназначена для создания ботов на Telegram и имеет высокую производительность и поддержку. Однако, у aiogram может быть проблема с документацией, но есть чат в Telegram, где всегда можно получить помощь от разработчика библиотеки.

Вы также можете запустить сервер без сервера на платформах Azure, Google, AWS или Yandex Functions с бесплатным лимитом в 1 000 000 обращений в месяц.

Также стоит обратить внимание на библиотеку telethon, если вам требуется делать то, что может только клиент Telegram, например, загружать файлы размером более 40 МБ. Она асинхронная и общается с серверами Telegram по протоколу MTProto. Одна из реализаций telethon, подходящая для создания ботов — Garnet.

Исходя из этой информации, можно сделать следующие выводы:

  • Если вам нужна библиотека с высокой производительностью и поддержкой, но вы готовы справляться с возможными трудностями в документации, выбирайте aiogram.
  • Если вам нужно что-то простое и хотите подробную документацию и сниппеты кода, обратите внимание на python-telegram-bot.
  • Если вам нужно делать то, что может только клиент Telegram, рассмотрите библиотеку telethon.

Порядок создания нового телеграм бота

Действия в телеграм

  1. Создайте новый бот в Telegram через BotFather:
  2. Откройте Telegram и найдите BotFather.
  3. Начните диалог с BotFather и нажмите «/start».
  4. Следуйте инструкциям BotFather для создания нового бота:
  1. Введите имя бота (может быть любое, затем можно отредактировать)
  2. Введите логин бота (должен быть уникальным и заканчиваться на _bot)

Диалог создания бота

Установка библиотеки

Установите и настройте необходимую библиотеку Python для работы с телеграм, например aiogram или python-telegram-bot.

Еще по теме:  Как перейти по кьюар коду в Телеграмм

Установка aiogram

Запустите командный интерпретатор (в Windows — cmd.exe)

pip install aiogram

Как установить библиотеку Python Telegram Bot в Windows, Linux и MacOS:

  1. Windows:
    • Откройте командную строку или PowerShell.
    • Установите библиотеку с помощью команды: pip install python-telegram-bot
    • Подождите, пока процесс установки завершится.
    • Linux:
      • Откройте терминал.
      • Установите библиотеку с помощью команды: pip install python-telegram-bot .
      • Подождите, пока процесс установки завершится.
      • MacOS:
        • Откройте терминал.
        • Установите библиотеку с помощью команды: pip install python-telegram-bot
        • Подождите, пока процесс установки завершится.

        После завершения установки библиотеки Python Telegram Bot вы можете использовать ее в своих проектах для создания телеграм-ботов.

        Как установить библиотеку telethon

        Windows:

        1. Откройте командную строку или PowerShell.
        2. Введите команду: pip install telethon .
        3. Нажмите клавишу Enter и дождитесь завершения установки.

        Linux:

        1. Откройте терминал.
        2. Введите команду: pip install telethon .
        3. Нажмите клавишу Enter и дождитесь завершения установки.

        MacOS:

        1. Откройте терминал.
        2. Введите команду: pip install telethon .
        3. Нажмите клавишу Enter и дождитесь завершения установки.

        После завершения установки вы сможете использовать библиотеку Telethon в своих проектах для взаимодействия с API Telegram.

        Обратите внимание, что для успешной установки библиотеки Telethon вам может потребоваться наличие Python и pip на вашей системе. Если они не установлены, вам следует установить их перед установкой библиотеки Telethon.

        Реализация простого бота в aiogram

        1. Импортируйте необходимые модули и классы из выбранной библиотеки.
        2. Создайте экземпляр класса бота и передайте ему токен вашего бота:

        import aiogram # Импортируйте модуль из выбранной библиотеки bot = aiogram.Bot(token=’YOUR_BOT_TOKEN’) # Создайте экземпляр класса бота и передайте токен вашего бота
        dispatcher = aiogram.Dispatcher(bot) # Создайте экземпляр класса Dispatcher и передайте экземпляр класса бота
        async def main(): await dispatcher.start_polling() # Запустить бота для получения входящих сообщений и событий if __name__ == ‘__main__’: aiogram.executor.start_polling(dp, skip_updates=True) # Запустить основной цикл выполнения бота

        Пример простейшего бота на aiogram

        После этого вы можете запустить бота, и он будет приветствовать пользователей и создавать кнопку, которая ссылается на указанный сайт.

        Обратите внимание, что для работы этого кода необходима версия Python 3.7 или выше

        Эхо-бот

        Бот отвечает тем же сообщением, что и было отправлено. Кроме случая, когда отправлены слова cat, cats, puss. В этом случае, будет отправлена картинка, сохраненная в файле datacats.jpg

        Источник: victor-komlev.ru

        Создание бота в Telegram на Python

        Course cover

        Курс расскажет, как устроены боты в Telegram и научит вас основам их разработки на Python.

        1. В первом модуле вы узнаете что такое Telegram-боты и как они работают. Как их создавать. Как происходит взаимодействие пользователей и ботов.
        2. Во втором узнаете как работать с библиотекой для разработки ботов — python-telegram-bot. Напишите 4 простых бота и научитесь обрабатывать команды от пользователей, работе с текстовыми сообщениями, клавиатурами и фото.
        3. В третьем модуле получите советы по привлечению первых пользователей в ваши боты.

        Для кого этот курс

        Для тех, кто хочет разобраться, как работают боты в Telegram и в основах их разработки на Python.

        Начальные требования

        Знание основ программирования на Python.

        Источник: stepik.org

        Рейтинг
        ( Пока оценок нет )
        Загрузка ...