Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Khalmatov/python-telegram-bots
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Реализация телеграм-ботов различными методами, начиная от написания бота на чистом Python без внешних фреймворков и заканчивая реализацией бота внутри фреймворка Django
Проект находится в стадии разработки и будет регулярно дополняться
Для начала необходимо установить и активировать виртуальную среду, обновить pip и установить все зависимости:
python3 -m venv venv source ./venv/bin/activate pip install pip --upgrade pip install -r requirements.txt
Хардкор-бот без фреймворков
Простой эхо-бот. Умеет работать только с GET -запросами. Для этого он использует библиотеку requests .
Для получения обновлений от Telegram используется метод getUpdates . Исходники лежат здесь.
Предполагается, что токен лежит в файле config.py в папке bot-hardcore
Разница между предыдущим ботом и этим в методе получения обновлений от Telegram. Здесь бот вместо того, чтобы периодически спамить сервера Telegram методом getUpdates для получения обновлений, работает по принципу Webhook .
Исходники лежат здесь.
Предполагается, что токен лежит в файле config.py в папке bot-flask
Запуск на сервере с установленным сертификатом SSL
Для этого на сервере необходимо настроить связку Flask + UWSGI + Nginx
В этом вам поможет статья на DigitalOcean
Запуск на localhost или на сервере без SSL
Telegram требует, чтобы url-адрес для вебхука начинался с https:// . Поэтому для установки бота на локальный сервер или на сервер без SSL-сертификата вам понадобится установить «туннель» через сторонние сервисы типа localhost.run или ngrok. Рассмотрим пример установки с localhost.run.
Например, если в ваш web-сервер на Flask с телеграм-ботом внутри запущен по адресу 127.0.0.1:5000 (по умолчанию), вам достаточно ввести в терминале эту команду:
ssh -R 80:localhost:5000 localhost.run
В ответ вы получите url-адреса вида https://f6773f9edca4d5.localhost.run , по которому извне можно будет получить доступ к локальным файлам вашего компьютера
Для установки вебхука необходимо послать get-запрос такого формата:
https://api.telegram.org//setWebhook?url=
- token — это токен, который вы получили от BotFather
- url — это url-адрес, на который будут приходить обновления в виде POST-запроса
https://api.telegram.org/bot123445:FJFIOEJFIOER/setWebhook?url=https://bot.mysite.com
Чтобы послать get-запрос скопируйте url выше (изменив данные на свои) и:
- либо вставьте url в поле ввода адреса вашего браузера и нажмите Enter
- либо в терминале пошлите запрос через curl :
curl -X GET https://api.telegram.org/bot123445:FJFIOEJFIOER/setWebhook?url=https://f6773f9edca4d5.localhost.run
В ответ вы должны получить:
< "ok":true, "result":true, "description":"Webhook was set" >
Бот, который реализован внутри приложения Django и запускаетя по команде python manage.py bot .
Используется фреймворк python-telegram-bot
Исходники лежат здесь.
Предполагается, что токен лежит в файле config.py в папке bot-django
Настройка рабочей среды Django
Для того, чтобы бот работал, он должен находиться внутри зарегистрированного приложения Django. Если у вас уже есть готовый проект на Django, переходите сразу на шаг №2. В ином случае:
django-admin startproject myproject cd ./myproject
- Скопируйте bot-django в родительскую папку проекта Django (в моем случае это папка myproject ) и зарегистрируйте приложение в настройках по пути `myproject/settings.py’:
. INSTALLED_APPS = [ . 'bot-django', ] .
Если все прошло успешно, при наборе в терминале команды python manage.py —help вы должны увидеть что-то подобное:
Type 'manage.py help ' for help on a specific subcommand. Available subcommands: . [bot-django] bot
Как вы, наверное, уже догадались, запуск бота осуществляется командой python manage.py bot . Если бот успешно запущен, вы должны увидеть в терминале такой ответ:
'id': 1234567890, 'first_name': 'Крутой-бот', 'is_bot': True, 'username': 'very_cool_bot', 'can_join_groups': False, 'can_read_all_group_messages': False, 'supports_inline_queries': False>