Лайфхаки

Маленькие, полезные хитрости

Не работает telegram бот на python?

02.07.2023 в 22:23

Не работает telegram бот на python?

Сделал базового бота Telegram на Python.

import telebot bot = telebot.TeleBot("1101114834:AAHYPyEyL7QicW8OQuKsiDrN28gBBAmcCJg") @bot.message_handler(commands=) def send_welcome(message): bot.reply_to(message, "Howdy, how are you doing?") bot.polling()

Вылезает ошибка:

Exception has occurred: ConnectTimeout HTTPSConnectionPool(host='api.telegram.org', port=443): Max retries exceeded with url: /bot1101114834:AAHYPyEyL7QicW8OQuKsiDrN28gBBAmcCJg/getUpdates?offset=1&timeout=20 (Caused by ConnectTimeoutError(, 'Connection to api.telegram.org timed out. (connect timeout=3.5)'))

Если что я живу в Росии ия знаб что могут быть проблемы с vpn на я не зна ка их решать…Я использую Python 3. 7 , Windows 10 pro и PyTelegramBotApi (

    Сергей Горностаев @sergey-gornostaev Куратор тега Python

    В России проблема не с VPN, а с блокировкой доступа к серверам Telegram. Либо используйте VPN, либо запускайте ваш код не на территории РФ.

    Написано

    Сергей Горностаев @sergey-gornostaev Куратор тега Python

    Искандер Кувыкин , не существует настроек VPN для telegram-бота. Просто подключаете к VPN компьютер, на котором запускается бот, и всё.

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

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

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

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

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

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

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

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

Запуск телеграм бота на сервере python. Запуск бота


На сервере создаем файл bot.py:nano bot.pyИ вставляем в него код:

from subprocess import check_output import telebot import time bot = telebot.TeleBot("XXXXXXXXX:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")#токен бота user_id = 0 #id вашего аккаунта @bot.message_handler(content_types=) def main(message): if (user_id == message.chat.id): #проверяем, что пишет именно владелец comand = message.text #текст сообщения try: #если команда невыполняемая - check_output выдаст exception bot.send_message(message.chat.id, check_output(comand, shell = True)) except: bot.send_message(message.chat.id, "Invalid input") #если команда некорректна if __name__ == '__main__': while True: try:#добавляем try для бесперебойной работы bot.polling(none_stop=True)#запуск бота except: time.sleep(10)#в случае падения

Заменяем в нём токен бота на тот, который выдал, и user_id — на значение id вашего аккаунта. Проверка id юзера нужна для того, чтобы бот предоставлял доступ к вашему серверу только вам. Функцияcheck_output()выполняет переданную команду и возвращает результат.Осталось только запустить бота. Для запуска процессов на сервере я предпочитаю использоватьscreen(sudo apt-get install screen):

screen -dmS ServerBot python3 bot.py

(где «ServerBot» — идентификатор процесса)Процесс автоматически запустится в фоном режиме. Перейдем в диалог с ботом и проверим, что всё работает, как надо:Сongratulations! Бот выполняет присылаемые ему команды. Теперь, чтобы получить доступ к серверу, вам достаточно открыть диалог с ботом.

Лучшая библиотека для телеграм бота python. Создание первого Telegram бота на Python. Част. Выбираем библиотеку и пишем первого бота.

Разбираемся, как написать чат-бота с помощью библиотеки aiogram. Весь код — внутри статьи.

Компании используют чат-ботов в Telegram для разных задач: рассылают новости о новых акциях, принимают платежи или даже организуют службу технической поддержки. Обычные пользователи тоже используют их для своих бытовых нужд — ведут учёт личных финансов или оформляют посты в социальных сетях.

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

Библиотеки для создания бота

Для создания Telegram-ботов на Python существует несколько десятков библиотек. Они различаются популярностью, размером комьюнити и функциональностью. Рассмотрим самые популярные.

1. aiogram

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

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

3. TeleBot

Библиотека для создания простых ботов, позволяющая работать с асинхронным и синхронным подходом на выбор. Подходит для небольших проектов. Подробнее можно узнать  в документации .

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

Для этого нам необходимо:

  • установить Python и настроить виртуальное окружение;
  • зарегистрировать бота в специальном Telegram-канале @BotFather;
  • установить библиотеку aiogram;
  • написать код эхо-бота, связав его по API с Telegram.

Устанавливаем Python и создаём виртуальное окружение

На macOS или Linux. Python установлен в эти операционные системы изначально. Чтобы проверить его наличие, откройте терминал и введите команду:

python --version

Если у вас не установлен Python:
Переходите на официальный сайт, скачиваете актуальную версию и устанавливаете её.

Не забудьте поставить галочку add PATH во время установки

После установки и проверки Python требуется установить виртуальное окружение с помощью virtualenv.

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

virtualenv устанавливается через терминал:

sudo pip3 install virtualenv

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

Команда mkdir создаст папку  cd переведёт нас в неё. Теперь в этой директории будут храниться файлы проекта, связанные с нашим ботом.

Развернём виртуальное окружение внутри папки 

virtualenv venv -p python3

Теперь его активируем. Если этого не сделать, то оно не будет работать.

source venv/bin/activate

Шаг 2
Создаём бота

Для создания бота необходимо воспользоваться Telegram и ботом @BotFather. Откройте мессенджер и введите название бота в поисковой строке:

Открываем его, жмём кнопку «Запустить» и вводим команду /newbot:

Теперь напишем название и юзернейм для нашего бота. Назовём его echo_skillbox_bot (теперь это имя занято, так что вам надо будет придумать своё). В ответ придёт наш токен, который мы будем использовать для подключения к API Telegram.

Этот токен мы сохраняем — он потребуется нам в будущем.