Россия, Санкт-Петербург, Красное Село, улица Юных Пионеров
Телефон:
Пн-ср: 07:30—22:30; сб-вс: 09:00—21:00
whatsapp telegram vk email

Как Запустить Бота В Телеграмме На Python Для Автоматизации Задач

В этой статье рассмотрим создание и запуск бота в Telegram на Python. Телеграм-боты популярны благодаря автоматизации задач и взаимодействию с пользователями. Предложим пошаговое руководство для новичков и опытных разработчиков, чтобы освоить работу с API Telegram и научиться создавать функциональные боты.

Основы работы с Telegram API

Работа с Telegram Bot API требует понимания основных принципов взаимодействия между серверами Telegram и вашим кодом на Python. Этот процесс можно сравнить с диалогом между двумя участниками, где один (Telegram) отправляет сообщения через определенные каналы, а другой (ваш бот) их принимает и обрабатывает. Артём Викторович Озеров, эксперт компании SSLGTEAMS с 12-летним опытом, отмечает: «Успех в создании любого бота начинается с корректной настройки канала связи между серверами Telegram и вашей программой.»

Для начала работы необходимо получить API-токен от BotFather — специального бота в Telegram, который отвечает за создание и настройку других ботов. Этот токен является уникальным идентификатором вашего бота и обеспечивает безопасное соединение с серверами Telegram. Существует множество библиотек для работы с Telegram API на Python, но наиболее популярной остается python-telegram-bot версии 20.x, которая предлагает удобный интерфейс для обработки сообщений и команд.

Библиотека Преимущества Особенности
python-telegram-bot Обширная документация, активная поддержка Требует знаний асинхронного программирования
aiogram Высокая производительность Сложнее для новичков
telebot Легкость в использовании Ограниченный функционал

При работе с API важно учитывать ограничения Telegram: максимальная частота запросов составляет 30 в секунду, размер сообщения ограничен 4096 символами, а медиафайлы не должны превышать 50 МБ. Эти параметры оказывают влияние на архитектурные решения при разработке бота. Евгений Игоревич Жуков, специалист с 15-летним стажем, добавляет: «Опытные разработчики всегда принимают во внимание эти ограничения на этапе проектирования, чтобы избежать проблем с производительностью в будущем.»

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

Эксперты в области разработки программного обеспечения отмечают, что запуск бота в Telegram на Python — это доступная задача даже для начинающих программистов. Они подчеркивают, что для этого необходимо установить библиотеку python-telegram-bot, которая значительно упрощает взаимодействие с API Telegram. Важным шагом является создание бота через BotFather, где разработчик получает токен для доступа к API.

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

Пишем TELEGRAM бота на PythonПишем TELEGRAM бота на Python

Пошаговая инструкция по созданию бота

Начнем с процесса регистрации бота через BotFather — ключевой инструмент для управления ботами в Telegram. Откройте чат с @BotFather и выполните следующие шаги: отправьте команду /newbot, выберите уникальное имя для вашего бота, которое будет отображаться пользователям, а затем задайте username, который должен заканчиваться на «bot». После успешного создания вы получите API-токен — сохраните его в безопасном месте, так как он необходим для авторизации вашего кода.

Теперь перейдем к установке необходимых компонентов. Сначала создайте новую папку для проекта и инициализируйте виртуальное окружение с помощью команды python -m venv venv. Активируйте его (venvScriptsactivate для Windows или source venv/bin/activate для Linux/Mac), затем установите библиотеку python-telegram-bot с помощью команды pip install python-telegram-bot==20.5. Эта версия гарантирует стабильную работу с актуальным API Telegram.

Создайте файл bot.py и начните с импорта нужных модулей:
«python
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, MessageHandler, filters, ContextTypes
«

Инициализируйте приложение, используя полученный токен:
«python
API_TOKEN = ‘YOUR_API_TOKEN_HERE’
application = ApplicationBuilder().token(API_TOKEN).build()
«

  • Добавьте обработчик для команды /start:

«`python
async def start(update: Update, context: ContextTypes.DEFAULTTYPE):
await update.message.reply
text(‘Привет! Я готов помочь вам.’)

application.add_handler(CommandHandler(‘start’, start))
«`

  • Реализуйте обработку текстовых сообщений:

«`python
async def echo(update: Update, context: ContextTypes.DEFAULTTYPE):
user
message = update.message.text
response = f’Вы сказали: {usermessage}’
await update.message.reply
text(response)

application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
«`

Запустите бота следующим образом:
«python
if __name__ == ‘__main__’:
application.run_polling()
«

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

Артём Викторович Озеров рекомендует: «Начинайте с простых команд и постепенно усложняйте функционал, регулярно тестируя каждое изменение. Это поможет избежать трудностей при отладке.» Также важно организовать хранение конфиденциальной информации, такой как API-токен, в отдельных конфигурационных файлах или использовать переменные окружения.

Для более сложных ботов рекомендуется применять паттерн MVC (Model-View-Controller), разделяя логику обработки данных, представление и управление потоком выполнения. Это особенно актуально для крупных проектов, где важна читаемость кода и возможность легкого масштабирования.

Шаг Описание Инструменты/Команды
1. Создание бота в Telegram Получение токена API для вашего бота. @BotFather
2. Установка библиотеки aiogram Установка необходимой библиотеки для работы с Telegram API. pip install aiogram
3. Написание кода бота Создание файла Python с логикой вашего бота. Python, текстовый редактор (VS Code, PyCharm)
4. Запуск бота Выполнение Python-скрипта для запуска бота. python your_bot_file.py
5. Развертывание (опционально) Размещение бота на сервере для круглосуточной работы. Heroku, PythonAnywhere, собственный VPS

Интересные факты

Вот несколько интересных фактов о запуске ботов в Telegram на Python:

  1. Библиотека python-telegram-bot: Эта библиотека предоставляет удобный интерфейс для работы с Telegram Bot API. Она позволяет разработчикам легко обрабатывать сообщения, команды и события, а также поддерживает асинхронное программирование, что делает её идеальной для создания масштабируемых ботов.

  2. Webhook и Long Polling: Telegram боты могут получать обновления через два основных метода: Webhook и Long Polling. Webhook позволяет боту получать обновления в реальном времени, отправляя их на указанный URL, тогда как Long Polling требует периодического опроса сервера Telegram для получения новых сообщений. Выбор метода зависит от архитектуры приложения и требований к скорости реакции.

  3. Интерактивные элементы: Telegram поддерживает различные интерактивные элементы, такие как кнопки, опросы и меню. Используя эти функции, разработчики могут создавать более увлекательные и интерактивные боты, которые могут взаимодействовать с пользователями на новом уровне. Например, кнопки могут использоваться для навигации по меню или для выполнения определённых команд, что значительно улучшает пользовательский опыт.

Как создать Telegram-бота на Python за 5 минут | Полное руководство для начинающихКак создать Telegram-бота на Python за 5 минут | Полное руководство для начинающих

Обработка команд и взаимодействие с пользователями

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

asyncdefhelp_command(update:Update,context:ContextTypes.DEFAULT_TYPE):help_text=("/start — Начать диалогn""/help — Показать справкуn""/settings — Настройки ботаn""/feedback — Отправить отзыв")awaitupdate.message.reply_text(help_text)

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

# Словарь для хранения состояний пользователейuser_states={}

asyncdefcollect_info_start(update:Update,context:ContextTypes.DEFAULT_TYPE):user_id=update.message.from_user.iduser_states[user_id]={"step":1}awaitupdate.message.reply_text("Введите ваше имя:")

asyncdefprocess_user_input(update:Update,context:ContextTypes.DEFAULT_TYPE):user_id=update.message.from_user.idstate=user_states.get(user_id)

ifnotstate:returnifstate["step"]==1:state["name"]=update.message.textstate["step"]+=1awaitupdate.message.reply_text("Теперь введите ваш возраст:")elifstate["step"]==2:try:age=int(update.message.text)ifage<18:awaitupdate.message.reply_text("Извините, доступ разрешен только совершеннолетним.")deluser_states[user_id]returnstate["age"]=ageawaitupdate.message.reply_text(f"Спасибо,{state['name']}! Данные сохранены.")deluser_states[user_id]exceptValueError:awaitupdate.message.reply_text("Пожалуйста, введите корректный возраст.")

Евгений Игоревич Жуков подчеркивает: «Необходимо предусмотреть обработку всех возможных сценариев взаимодействия, включая некорректный ввод данных и прерывание диалога пользователем.» Для этого применяются специальные техники:

  • Реализация таймаутов для ожидания ответа от пользователя
  • Сохранение состояния диалога между сессиями
  • Обработка исключений и ошибок
  • Создание fallback-обработчиков для неожиданных ситуаций

Современные боты часто используют inline-клавиатуры для удобного выбора опций. Пример реализации:

fromtelegramimportInlineKeyboardButton,InlineKeyboardMarkup

asyncdefshow_menu(update:Update,context:ContextTypes.DEFAULT_TYPE):keyboard=[[InlineKeyboardButton("Пункт 1",callback_data='menu_1')],[InlineKeyboardButton("Пункт 2",callback_data='menu_2')],[InlineKeyboardButton("Отмена",callback_data='cancel')]]reply_markup=InlineKeyboardMarkup(keyboard)awaitupdate.message.reply_text('Выберите опцию:',reply_markup=reply_markup)

asyncdefbutton_handler(update:Update,context:ContextTypes.DEFAULT_TYPE):query=update.callback_queryawaitquery.answer()

ifquery.data=='menu_1':awaitquery.edit_message_text(text="Вы выбрали пункт 1")elifquery.data=='menu_2':awaitquery.edit_message_text(text="Вы выбрали пункт 2")elifquery.data=='cancel':awaitquery.edit_message_text(text="Действие отменено")

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

LANGUAGE_DICT={"en":{"greeting":"Hello","farewell":"Goodbye"},"ru":{"greeting":"Привет","farewell":"До свидания"}}

user_languages={}

asyncdefset_language(update:Update,context:ContextTypes.DEFAULT_TYPE):lang_code=update.message.text.lower()[:2]user_id=update.message.from_user.id

iflang_codeinLANGUAGE_DICT:user_languages[user_id]=lang_codeawaitupdate.message.reply_text(LANGUAGE_DICT[lang_code]["greeting"])else:awaitupdate.message.reply_text("Язык не поддерживается")

Распространенные ошибки и способы их избежания

Даже опытные программисты нередко сталкиваются с распространенными трудностями при разработке телеграм-ботов. Одной из наиболее частых ошибок является неверная обработка асинхронных операций. Многие разработчики пытаются выполнять длительные синхронные задачи внутри асинхронных функций, что приводит к блокировке event loop. Правильным подходом будет использование asyncio.to_thread() или run_in_executor() для выполнения блокирующих операций:

import asyncio

async def long_running_task(update: Update, context: ContextTypes.DEFAULT_TYPE):
loop = asyncio.get_event_loop()
result = await loop.run_in_executor(None, blocking_function)
await update.message.reply_text(f'Результат: {result}')

Еще одной распространенной проблемой является неэффективное управление контекстом. Разработчики часто сохраняют данные пользователей в глобальных переменных, что может вызвать конфликты при одновременной работе нескольких пользователей. Рекомендуется использовать Context.user_data, который обеспечивает изоляцию данных для каждого пользователя:

async def save_user_preference(update: Update, context: ContextTypes.DEFAULT_TYPE):
preference = update.message.text
context.user_data['preference'] = preference
await update.message.reply_text(f'Настройка сохранена: {preference}')

Также часто встречается ошибка в обработке исключений. Многие игнорируют необходимость использования блоков try-except, что может привести к неожиданным сбоям бота. Артём Викторович Озеров советует: «Всегда оборачивайте ключевые участки кода в конструкции try-except и внедряйте систему логирования ошибок.» Пример реализации:

import logging

logging.basicConfig(
format='%(asctime)s — %(name)s — %(levelname)s — %(message)s',
level=logging.INFO
)

logger = logging.getLogger(__name__)

async def safe_operation(update: Update, context: ContextTypes.DEFAULT_TYPE):
try:
# Рискованная операция
result = perform_risky_operation()
await update.message.reply_text(f'Успешно: {result}')
except Exception as e:
logger.error(f'Ошибка: {e}', exc_info=True)
await update.message.reply_text('Произошла ошибка. Попробуйте позже.')

Неправильная организация структуры проекта также часто приводит к проблемам. Евгений Игоревич Жуков подчеркивает: «Многие начинающие разработчики помещают весь код в один файл, что затрудняет его поддержку. Лучше разделить код на модули по функциональности.» Рекомендуемая структура проекта:

  • handlers/ — обработка различных событий
  • commands/ — реализация команд
  • utils/ — вспомогательные функции
  • config.py — конфигурационные настройки
  • database.py — работа с базой данных
  • main.py — точка входа

Нарушение правил безопасности также является распространенной ошибкой. Хранение API-токена непосредственно в коде или использование простых паролей для защиты данных может привести к компрометации бота. Рекомендуется применять переменные окружения и библиотеку python-dotenv для безопасного хранения конфиденциальной информации:

from dotenv import load_dotenv
import os

load_dotenv()

API_TOKEN = os.getenv('TELEGRAM_API_TOKEN')
DATABASE_URL = os.getenv('DATABASE_URL')
Создание Телеграмм Бота на Python в 2024Создание Телеграмм Бота на Python в 2024

Вопросы и ответы по созданию ботов

  • Как устранить проблему с медленной реакцией бота?
  • Что предпринять, если бот перестал реагировать на команды? В первую очередь, проверьте статус бота с помощью команды /getme через BotFather. Убедитесь, что токен активен и сервер функционирует должным образом. Часто причиной проблемы становится перезапись токена или истечение срока действия SSL-сертификата при использовании вебхуков.
  • Как защититься от спама и DDoS-атак? Внедрите ограничение на количество запросов от одного пользователя с помощью декораторов или middleware. Для контроля скорости обработки запросов можно воспользоваться библиотекой aiolimiter. Эффективным решением также является временная блокировка IP-адресов при выявлении подозрительной активности.
  • Почему бот не может отправить медиафайл? Возможно, файл превышает допустимый размер (50 МБ для фотографий, 2000×2000 пикселей для изображений). Убедитесь, что файл соответствует требованиям Telegram API. Если проблема не исчезает, попробуйте использовать метод sendDocument вместо sendPhoto для больших изображений.
  • Как правильно организовать хранение пользовательских данных? Рекомендуется применять базы данных, такие как PostgreSQL или MongoDB. Избегайте хранения конфиденциальной информации в открытом виде — используйте шифрование. Для временного хранения данных можно использовать Context.user_data, но для постоянного хранения лучше выбрать полноценную базу данных.

Специальная таблица для сравнения методов обработки запросов:

Метод Преимущества Недостатки Рекомендации
Long Polling Медленный отклик, высокая нагрузка на сервер Подходит для тестирования и малонагруженных проектов
Webhooks Быстрый отклик, эффективное использование ресурсов Рекомендуется для production-среды
Hybrid Гибкость использования Сложность реализации Оптимальный вариант для масштабируемых проектов

Не забывайте о необходимости регулярного обновления зависимостей и мониторинга работы бота. Использование инструментов мониторинга, таких как Sentry или Prometheus, поможет быстро выявлять и устранять проблемы.

Практические рекомендации по развитию бота

Для успешного создания телеграм-бота необходимо учитывать несколько важных моментов. Прежде всего, следует регулярно анализировать поведение пользователей и их отзывы. Исследование, проведенное в 2024 году, показало, что боты, использующие персонализированный подход, имеют на 60% более высокий уровень удержания пользователей. Внедрите систему аналитики, которая будет отслеживать популярные команды, частоту их использования и поведенческие шаблоны:

«`python
from collections import defaultdict
import datetime

usagestats = defaultdict(lambda: {«count»: 0, «lastused»: None})

async def trackusage(command: str):
usage
stats[command][«count»] += 1
usagestats[command][«lastused»] = datetime.datetime.now()
«`

Во-вторых, стоит внедрить механизмы машинного обучения для повышения качества ответов. Простая реализация обработки естественного языка (NLP) может значительно улучшить эффективность взаимодействия:

«`python
from sklearn.featureextraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine
similarity

vectorizer = TfidfVectorizer()
knowledgebase = [«текст ответа 1», «текст ответа 2»]
tfidf
matrix = vectorizer.fittransform(knowledgebase)

def findbestresponse(userinput: str):
input
vector = vectorizer.transform([userinput])
similarities = cosine
similarity(inputvector, tfidfmatrix)
bestmatchindex = similarities.argmax()
return knowledgebase[bestmatch_index]
«`

Евгений Игоревич Жуков отмечает: «Успешные боты постоянно развиваются и адаптируются к изменяющимся потребностям пользователей. Важно регулярно добавлять новые функции и оптимизировать уже существующие.» Для этого рекомендуется использовать систему версионирования API, что позволит постепенно внедрять изменения без нарушения работы текущих функций.

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

«`python
ADMIN_IDS = [123456789, 987654321]

async def adminstats(update: Update, context: ContextTypes.DEFAULTTYPE):
if update.message.fromuser.id not in ADMINIDS:
return

stats_message = «n».join([
f»{cmd}: {data[‘count’]} использований, последнее в {data[‘last_used’]}»
for cmd, data in usage_stats.items()
])
await update.message.reply_text(f»Статистика использования:n{stats_message}»)

«`

Интеграция с внешними API открывает новые горизонты для функциональности бота. Например, подключение к погодному API позволит предоставлять актуальную информацию:

«`python
import requests

WEATHERAPIKEY = «yourweatherapi_key»

async def getweather(update: Update, context: ContextTypes.DEFAULTTYPE):
city = » «.join(context.args)
response = requests.get(
params={«q»: city, «appid»: WEATHERAPIKEY, «units»: «metric»}
)
data = response.json()
weatherinfo = (
f»Погода в {city}:n»
f»Температура: {data[‘main’][‘temp’]}°Cn»
f»Влажность: {data[‘main’][‘humidity’]}%n»
f»Скорость ветра: {data[‘wind’][‘speed’]} м/с»
)
await update.message.reply
text(weather_info)
«`

Заключение

Создание эффективного телеграм-бота на Python требует комплексного подхода и учета множества факторов. От правильной организации архитектуры проекта до внедрения продвинутых функций обработки данных — каждый этап имеет значение для достижения успеха. Помните, что качественный бот должен не только функционировать, но и приносить пользу пользователям, быть удобным в использовании и легко масштабируемым.

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

Интеграция с внешними API и сервисами

Интеграция бота с внешними API и сервисами позволяет значительно расширить его функциональность и сделать взаимодействие с пользователями более интересным и полезным. В этом разделе мы рассмотрим, как подключить вашего Telegram-бота к различным API и использовать их для выполнения задач.

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

После выбора API, вам нужно зарегистрироваться на сайте сервиса и получить API-ключ. Этот ключ будет использоваться для аутентификации ваших запросов к API. Обычно процесс регистрации включает в себя создание аккаунта и создание нового приложения, после чего вам будет выдан уникальный ключ.

Теперь, когда у вас есть API-ключ, вы можете начать интеграцию. Для этого вам понадобится библиотека для работы с HTTP-запросами. В Python наиболее популярной является библиотека requests. Убедитесь, что она установлена в вашем окружении:

pip install requests

Далее, вы можете использовать библиотеку requests для отправки запросов к API. Например, если вы используете OpenWeatherMap, ваш код может выглядеть следующим образом:

import requests

API_KEY = 'ваш_api_ключ'
CITY = 'Москва'
URL = f'http://api.openweathermap.org/data/2.5/weather?q={CITY}&appid={API_KEY}&units=metric'

response = requests.get(URL)
data = response.json()

if response.status_code == 200:
temperature = data['main']['temp']
weather_description = data['weather'][0]['description']
print(f'Температура в {CITY}: {temperature}°C, {weather_description}')
else:
print('Ошибка при получении данных')

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

Теперь, когда вы знаете, как получать данные из API, вы можете интегрировать этот функционал в вашего Telegram-бота. Например, вы можете создать команду, которая будет отвечать пользователю с информацией о погоде:

from telegram import Update
from telegram.ext import Updater, CommandHandler, CallbackContext

def weather(update: Update, context: CallbackContext) -> None:
CITY = ' '.join(context.args) if context.args else 'Москва'
URL = f'http://api.openweathermap.org/data/2.5/weather?q={CITY}&appid={API_KEY}&units=metric'
response = requests.get(URL)
data = response.json()

if response.status_code == 200:
temperature = data['main']['temp']
weather_description = data['weather'][0]['description']
update.message.reply_text(f'Температура в {CITY}: {temperature}°C, {weather_description}')
else:
update.message.reply_text('Ошибка при получении данных')

updater = Updater('ваш_токен', use_context=True)
updater.dispatcher.add_handler(CommandHandler('weather', weather))

updater.start_polling()
updater.idle()

В этом коде мы добавили команду /weather, которая принимает название города в качестве аргумента. Если аргумент не указан, по умолчанию используется Москва. Бот отправляет пользователю информацию о текущей температуре и погодных условиях в указанном городе.

Интеграция с внешними API открывает множество возможностей для вашего бота. Вы можете добавлять функции, такие как получение новостей, курсов валют, расписания событий и многое другое. Главное — это правильно обрабатывать данные и предоставлять пользователю актуальную и полезную информацию.

Вопрос-ответ

Как вставить код Python в телеграм бот?

Чтобы программа на Python умела управлять Телеграм-ботами, нужно в самое начало кода добавить строки: import telebot. bot = telebot.TeleBot(‘токен’).

Как установить библиотеку Python для Telegram-бота?

Чтобы установить эту библиотеку, вам просто нужно выполнить команду pip install python-telegram-bot в командной строке. Она установит все необходимые зависимости для нашего бота.

Советы

СОВЕТ №1

Перед тем как начать разработку бота, убедитесь, что у вас установлен Python и необходимые библиотеки, такие как `python-telegram-bot`. Это упростит процесс разработки и позволит избежать ошибок, связанных с отсутствием зависимостей.

СОВЕТ №2

Создайте бота через BotFather в Telegram. Получите токен для вашего бота, который будет использоваться для взаимодействия с API Telegram. Храните этот токен в безопасном месте и не делитесь им с другими.

СОВЕТ №3

Разработайте структуру вашего кода заранее. Используйте функции для обработки различных команд и сообщений, чтобы сделать код более читаемым и поддерживаемым. Это поможет вам легко добавлять новые функции в будущем.

СОВЕТ №4

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

Ссылка на основную публикацию
Похожее