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

В этой серии статей мы напишем телеграм бота на python. Он работает с внешним API, запрашивает результаты футбольных матчей и выводить их в сообщении.

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

Вся разработка разбита на этапы:

  1. Локальная установка библиотек и Redis.
  2. Регистрация и получение токена.
  3. Настройка , подключение к базам данных.
  4. Написание основной функциональности бота.
  5. Регистрации, выбор и настройка внешнего апи футбольных матчей.
  6. Добавление сбора результатов матчей и интеграция в бота.
  7. Деплой, публикация на сервере:
  1. Регистрация дешевого или бесплатного VPS.
  2. Запуск Редис-клиента.
  3. Запуск и настройка бота на сервере.

Вводные данные

Материал рассчитан на уровень Начинающий+, нужно понимать как работают классы и функции, знать основы базы данных и async/await. Если знаний мало, крайне желательно писать код в Pycharm, бесплатная версия подходит.

КАК СКОПИРОВАТЬ ТЕЛЕГРАМ БОТА В СЕРВИСЕ KING PROFIT

Используйте указанные версии библиотек, что бы проект работал без изменений. При установке иных версий вы можете получать ошибки, связанные с совместимостью.

Версия Python — 3.8+ aiogram==2.11.2 emoji==1.1.0 redis==3.5.3 ujson==4.0.1 uvloop==0.14.0 # не работает и не требуется на Windows

Локальная установка библиотек для бота и Redis

Для начала нужно создать проект «fonlinebot» с виртуальным окружение. В Pycharm это делается так:

pycharm new project

Затем установить библиотеки в виртуальном окружении. Сразу понадобятся 4: для бота, работы с redis, ускорения и emoji в сообщениях.

pip install aiogram==2.11.2 redis==3.5.3 ujson==4.0.1 emoji==1.1.0

Установка Redis локально

Redis — это резидентная база данных (такая, которая хранит записи прямо в оперативной памяти) в виде пар ключ-значение. Чтение и запись в память происходит намного быстрее, чем в случае с дисками, поэтому такой подход отлично подходит для хранения второстепенных данных.

Из недавней статьи — Redis для приложений на Python

Для установки Redis на Linux/Mac следуйте этим инструкциям: https://redis.io/download#from-source-code. Для запуска достаточно ввести src/redis-server .

Что бы установить на Windows скачайте и распакуйте архив отсюда. Для запуска откройте «redis-server.exe».

Теперь нужно убедиться, что все работает. Создайте файл «main.py» в корне проекта и выполните этот код:

# fonlinebot/main.py import redis r = redis.StrictRedis() print(r.ping())

Вывод будет True , в другом случае ошибка.

Регистрация бота и получение токена

Для регистрации напишем https://t.me/botfather команду /newbot . Далее он просит ввести имя и адрес бота. Если данные корректны, выдает токен. Учтите, что адрес должен быть уникальным, нельзя использовать «fonlinebot» снова.

Еще по теме:  Какой Телеграмм лучше установить на телефон

Футбольный телеграм бот на Python (1/4): Подготовка и настройка бота

На время разработки сохраним токен в файл. Создайте «config.py» в папке проекта для хранения настроек и запишите токен TOKEN = «ВАШ ТОКЕН»

Настройка бота

Теперь нужно связать бота с redis и базой данных, проверить работоспособность.

Создадим необходимые модули и файлы. В папке «fonlinebot» к созданным ранее «main.py» и «config.py» добавим: «database.py», «requirements.txt» и папку «app». В папку «app» добавьте: «bot.py», «dialogs.py», «service.py». Вот такая структура получится:

Футбольный телеграм бот на Python (1/4): Подготовка и настройка бота

Разделив бот на модули, его удобнее поддерживать и дорабатывать.

  • «main.py» — для запуска бота.
  • «config.py» — хранит настройки, ключи доступов и другую статическую информацию.
  • «database.py» — для работы с базой данных и кешем(redis).
  • «requirements.txt» — хранит зависимости проекта, для запуска на сервере.
  • «app» — папка самого бота.
  • «bot.py» — для взаимодействия бота с юзерами, ответы на сообщения.
  • «dialogs.py» — все текстовые ответы бота.
  • «service.py» — бизнес логика, получение и обработка данных о матчах.

Пришло время перейти к программированию. Запишем в «requirements.txt» наши зависимости:

aiogram==2.11.2 emoji==1.1.0 redis==3.5.3 ujson==4.0.1 uvloop==0.14.0

Так как большая часть программирует на Windows, uvloop мы не устанавливали локально. Установим его на сервере.

В «config.py» к токену добавим данные бота и подключения к redis.

# fonlinebot/config.py import ujson import logging logging.basicConfig(level=logging.INFO) TOKEN = «здесь должен быть токен» BOT_VERSION = 0.1 # База данных хранит выбранные юзером лиги BOT_DB_NAME = «users_leagues» # Тестовые данные поддерживаемых лиг BOT_LEAGUES = < «1»: «Бундеслига», «2»: «Серия А», «3»: «Ла Лига», «4»: «Турецкая Суперлига», «5»: «Чемпионат Нидерландов», «6»: «Про-лига Бельгии», «7»: «Английская Премьер-лига», «8»: «Лига 1», ># Флаги для сообщений, emoji-код BOT_LEAGUE_FLAGS = < «1»: «:Germany:», «2»: «:Italy:», «3»: «:Spain:», «4»: «:Turkey:», «5»: «:Netherlands:», «6»: «:Belgium:», «7»: «:England:», «8»: «:France:», ># Данные redis-клиента REDIS_HOST = ‘localhost’ REDIS_PORT = 6379 # По умолчанию пароля нет. Он будет на сервере REDIS_PASSWORD = None

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

Добавление базы данных

Теперь добавим классы для работы с базой данных sqlite и redis. База данных нужна для сохранения предпочтений по лигам юзеров.

Юзер будет выбирать 3 чемпионата для отслеживания, бот сохранит их в БД и использует для запроса результатов.

Кеш(redis) будет сохранять результаты матчей, что бы уменьшить количество запросов к API и ускорить время ответов. Как правило, бесплатные API лимитирует запросы.

# fonlinebot/database.py import os import logging import sqlite3 import redis import ujson import config # класс наследуется от redis.StrictRedis class Cache(redis.StrictRedis): def __init__(self, host, port, password, charset=»utf-8″, decode_responses=True): super(Cache, self).__init__(host, port, password=password, charset=charset, decode_responses=decode_responses) logging.info(«Redis start») def jset(self, name, value, ex=0): «»»функция конвертирует python-объект в Json и сохранит»»» r = self.get(name) if r is None: return r return ujson.loads(r) def jget(self, name): «»»функция возвращает Json и конвертирует в python-объект»»» return ujson.loads(self.get(name))

Еще по теме:  Где взять ссылку в Телеграмме на свой профиль на Айфоне

Класс Cache наследуется от StrictRedis . Мы добавляем 2 метода jset , jget для сохранения списков и словарей python в хранилище redis. Изначально он не работает с ними.

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

# fonlinebot/database.py #. class Database: «»» Класс работы с базой данных «»» def __init__(self, name): self.name = name self._conn = self.connection() logging.info(«Database connection established») def create_db(self): connection = sqlite3.connect(f».db») logging.info(«Database created») cursor = connection.cursor() cursor.execute(»’CREATE TABLE users (id INTEGER PRIMARY KEY, leagues VARCHAR NOT NULL);»’) connection.commit() cursor.close() def connection(self): db_path = os.path.join(os.getcwd(), f».db») if not os.path.exists(db_path): self.create_db() return sqlite3.connect(f».db») def _execute_query(self, query, select=False): cursor = self._conn.cursor() cursor.execute(query) if select: records = cursor.fetchone() cursor.close() return records else: self._conn.commit() cursor.close() async def insert_users(self, user_id: int, leagues: str): insert_query = f»»»INSERT INTO users (id, leagues) VALUES (, «»)»»» self._execute_query(insert_query) logging.info(f»Leagues for user added») async def select_users(self, user_id: int): select_query = f»»»SELECT leagues from leagues where record = self._execute_query(select_query, select=True) return record async def update_users(self, user_id: int, leagues: str): update_query = f»»»Update leagues set leagues = «» where self._execute_query(update_query) logging.info(f»Leagues for user updated») async def delete_users(self, user_id: int): delete_query = f»»»DELETE FROM users WHERE self._execute_query(delete_query) logging.info(f»User deleted»)

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

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

Источник: pythonru.com

Команды для чат-ботов Telegram для настройки и управления

image

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

Какие функции есть в BotFather

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

Основные команды

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

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

Работа начинается с команды /newbot. Её вводят и нажимают Enter. Далее пользователя просят ввести имя. Если оно не будет соответствовать нужным правилам, система его не примет. После придет код (токен), который пригодиться для дальнейшей разработки.

Его необходимо скопировать и сохранить.

В частности, для организации работы важно наличие следующих:

Еще по теме:  Как зайти в приватный канал в Телеграмме без приглашения с андроида если есть айди

Создание команд для чат-ботов

  1. Создавая платные услуги, нужно продумать то, как будет выполняться оплата. Для этого должна быть предусмотрена команда /payinbot – оплатить участие.
  2. Команда /readmore позволит продолжить чтение текста, если он не полностью помещается на экране.
  3. Для образовательного бота наличие списка лучших учеников позволит мотивировать команду. В этом поможет команда /usertop — ТОП 10 пользователей.
  4. В каждый момент времени при изучении материала нужно точно знать свой достигнутый уровень. Команда /progress должна быть реализована таким образом, чтобы дать об этом объективную информацию.
  5. Об общем содержании курсов можно узнать с помощью команды /content — контент / курсы.
  6. Чтобы попасть в раздел FAQ, можно использовать команду /help.
  7. Эффективной возможностью для развития платного обучения является наличие партнерской программы. Использование команды /invitefriends (пригласить друзей) может предусматривать выдачу реферальной ссылки для приглашения новых клиентов.
  8. В процессе работы главное меню является исходной позицией для работы с ботом. Для доступа к нему потребуется соответствующая команда — /mainmenu.
  9. Команда /balance (баланс) позволит узнать состояние оплаты услуг в любой момент времени.

Эти и другие команды должны соответствовать выбранному алгоритму работы бота.

Команды для редактирования

Основные команды, с помощью которых выполняется редактирование, следующие:

  • изменение имени бота /setbot;
  • /setdescription позволит создать описание того, как работает и зачем нужен бот, будет отображаться сразу после открытия;
  • редактирование краткого описания при помощи /setabouttext;
  • картинку или аватар чат-бота можно установить при помощи /setuserpic;
  • одна из наиболее важных — /setcommands, позволит определить список собственных команд создаваемого бота;
  • команда /delete позволяет прекратить работу и удалить бот.

Создание аккаунта чат-бота Telegram и основные команды

Команды для настройки бота

Чтобы подключить чат-бота к административной панели на сервере и наполнить бота контентом, необходим токен. Он будет идентифицировать бот при дальнейшей работе. Создание кода происходит по команде /token, отзыв токена выполняется с помощью /revoke.

Если автор считает нужным, он может использовать данные геолокации (/setinlinegeo). Настройки для осуществления обратной связи можно установить с помощью /setinlinefeedback. При работе может потребоваться применение online mode, доступное в результате применения команды /setinline.

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 1.8 / 5. Количество оценок: 38

Оценок пока нет. Поставьте оценку первым.

Источник: lessondelivery.com

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