Telegram bot как написать

Создаем Telegram-бот, работаем c I/O Bound нагрузкой, подключаем фичи Google Drive и пишем на C внутри Python.

Введение

В этой инструкции мы создадим приложение, которое интегрируется со сторонними API. Разберем I/O Bound нагрузку и поработаем с асинхронностью в Python.

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

Как написать телеграмм бота который будет в 21 00 по мск отправлять сообщение?

Для того, чтобы написать телеграм-бота, который будет отправлять сообщение в определенное время, можно использовать библиотеку python-telegram-bot и модуль schedule.

import telegram import schedule import time # Указываем id бота и токен bot = telegram.Bot(token=’YOUR_TOKEN’) chat_id = ‘YOUR_CHAT_ID’ # Функция, которая будет отправлять сообщение def send_message(): message = ‘Сообщение, которое нужно отправить в 21:00’ bot.send_message(chat_id=chat_id, text=message) # Задаем время отправки сообщения schedule.every().day.at(«21:00»).do(send_message) # Бесконечный цикл для проверки расписания while True: schedule.run_pending() time.sleep(1)

В этом примере бот будет отправлять сообщение каждый день в 21:00 по московскому времени. Вы можете изменить текст сообщения, время отправки и другие параметры в соответствии с вашими потребностями.

Telegram bot powered by C++ | Бот для наблюдения за курсом валют | Currency monitoring Telegram bot


Отслеживать
ответ дан 16 фев в 18:46
414 1 1 серебряный знак 11 11 бронзовых знаков

Можно более длинным, но не менее эффективным таким способом

import argparse import logging import pytz import telegram import telegram.ext import datetime MOSCOW_TZ = pytz.timezone(‘Europe/Moscow’) DAYS_OF_WEEK = (0, 1, 2, 3, 4, 5, 6) # Каждый день недели TARGET_TIME = datetime.time(hour=21, minute=0, second=0, tzinfo=MOSCOW_TZ) # Целевое время для отправки сообщения class TelegramBot: def __init__(self, token, chat_id): self.bot = telegram.Bot(token=token) self.chat_id = chat_id def send_message(self, message_text): self.bot.send_message(chat_id=self.chat_id, text=message_text) class Scheduler: def __init__(self, job_queue, target_time, days_of_week): self.job_queue = job_queue self.target_time = target_time self.days_of_week = days_of_week def schedule_job(self, job): # Запускаем задание каждый день в целевое время self.job_queue.run_daily(job, self.target_time, days=self.days_of_week) def configure_logging(): logging.basicConfig(format=’%(asctime)s — %(name)s — %(levelname)s — %(message)s’, level=logging.INFO) def parse_args(): parser = argparse.ArgumentParser() parser.add_argument(‘—bot-token’, required=True, help=’Telegram Bot API token’) parser.add_argument(‘—chat-id’, required=True, help=’Chat ID to send the message to’) return parser.parse_args() def main(): args = parse_args() # Создаем объект бота и передаем токен и идентификатор чата bot = TelegramBot(args.bot_token, args.chat_id) # Создаем очередь заданий job_queue = telegram.ext.JobQueue() # Создаем объект планировщика и передаем очередь заданий, целевое время и дни недели scheduler = Scheduler(job_queue, TARGET_TIME, DAYS_OF_WEEK) # Создаем задание для отправки сообщения def send_message_job(context): bot.send_message(‘Привет, мир!’) # Планируем задание на выполнение scheduler.schedule_job(send_message_job) # Создаем объект Updater и передаем токен, используем контекст и настраиваем очередь заданий updater = telegram.ext.Updater(token=args.bot_token, use_context=True) updater.job_queue = job_queue # Настраиваем логирование configure_logging() # Запускаем бота updater.start_polling() # Бот будет работать до остановки программы updater.idle() if __name__ == ‘__main__’: main()

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

Источник: ru.stackoverflow.com

Пишем бота Telegram на PHP

Anton Bagaiev

Anton Bagaiev Last updated Aug 3, 2016

Read Time: 9 min

Если вы читаете это, то скорее всего понимаете, что боты для чатов является популярным трендом в 2016 году.

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

И наиболее популярным мессенджером с открытым API для ботов является Telegram.

Что мы собираемся делать

В этой статье мы создадим простой бот-секундомер для Telegram. Я покажу вам как создавать собственного бота, связываться с аналитикой, напишем немножко кода и в конце добавим своего бота в магазин ботов.

Создаем бота с помощью BotFather

Первым шагом при создании бота нужно зарегистрировать аккаунт для своего бота в Telegram. И для этого есть собственный бот, который называется BotFather. Просто добавьте его в свой контакт лист и вы сможете создавать и настраивать ботов Telegram, просто напечатав команду /newbot и следуя инструкциям от BotFather.

BotFather running Telegram

После регистрации вашего нового бота, вы получите сообщение с поздравлением и токен для авторизации. Мы скоро будем использовать этот токен для авторизации бота и отправки запросов к Bot API.

Позднее вы сможете использовать BotFather для добавления описаний и фото к профилям ваших ботов, регенерации токенов, задания списка доступных боту команд, удаления аккаунтов и прочее. Чтобы получить полный список команд, просто напечатайте /help в чате с BotFather.

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

Соединяемся с Botan Analytics

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

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

Bot Analytics Graph

Для того чтобы начать, нужно зарегистрировать ваше бота в Botan и получить свой токен. И опять же это можно сделать в боте, используя BotanioBot:

Registering a bot in Telegram

Просто нажмите на «Add bot» на вашей клавиатуре в диалоговом окне, введите ник вашего бота, и получите ваш токен для трекинга. Теперь Botanio готов регистрировать события вашего бота, а вы можете получать статистику по пользователям, сессиям и событиям прямо в вашем мессенджере.

Создание и регистрация SSL Webhook

В Telegram есть два способа получения сообщений от пользователей: длинный опрос и webhooks.

A diagram of the Telegram API

Обычно с долгим опросом, вам необходимо запрашивать новые сообщения из API, а с webhooks вы устанавливаете свой обратный вызов, который будет вызван API Telegram, если появится новое сообщение от пользователя. Я предпочитаю использовать webhooks потому что это больше похоже на взаимодействие в реальном времени, так что в этой статье мы так же будем использовать этот способ. Теперь нам нужно выбрать URL для обратного вызова нашего webhook, который будет вызван по HTTPS протоколу, и нужно установить его достаточно безопасным, и расположить свой скрипт в безопасной директории как сказано в руководстве:

Если вы хотите убедится что запрос Webhook действительно исходит от Telegream, мы рекомендуем использовать секретный путь в URL, например: https://www.example.com/ . Так как никто больше не знает токена для вашего бота, то вы можете быть уверены, что запрос идет от нас.

Если у вас подтвержденный SSL сертификат, то все что вам нужно, это открыть ваш URL в браузере:

Еще по теме:  История скачиваний в Телеграмме ПК

https://api.telegram.org:443/bot[token]/setwebhook?url=[webhook]

Иначе необходимо сгенерировать самоподписанный сертификат. Вот пример команды в Linux для этого:

openssl req -newkey rsa:2048 -sha256 -nodes -keyout /path/to/certificate.key -x509 -days 365 -out /path/to/certificate.crt -subj «/C=IT/ST=state/L=location/O=description/CN=yourdomain.com»

И не забудьте открыть SSL порт:

sudo ufw allow 443/tcp

Чтобы подтвердить ваш сертификат и сделать ваш домен для webhook доверительным, необходимо загрузить свой публичный ключ:

curl
-F «url=https://yourdomain.com/path/to/script.php»
-F «certificate=/path/to/certificate.key»
«https://api.telegram.org/bot[token]/setwebhook»

В итоге вы получите следующий JSON ответ:

«ok»:true,»result»:true,»description»:»Webhook was set»>

В нем сказано что webhook был установлен и мы готовы начать работу с ботом.

Создаем базу данных

Теперь нам нужно создать базу данных для наших таймеров. Что мы собираемся в ней хранить? Когда пользователь дает команду секундомеру начать отсчет, мы будем брать ID чата и сохранять строку с ID чата и текущим временем Unix. Следовательно мы сохраним строку с отметкой времени и ID чата.

Чтобы показывать текущее время секундомера, мы будем брать сохраненную метку времени и сравнивать ее с текущим временем. Разница и будет текущее время в секундах. Если пользователь останавливает секундомер, то мы просто удаляем строчку с данным ID чата.

Итак давайте создадим базу данных и таблицу для хранения информации для секундомера:

CREATE TABLE IF NOT EXISTS `stopwatch` (
`chat_id` int(10) unsigned NOT NULL,
`timestamp` int(10) unsigned NOT NULL,
PRIMARY KEY (`chat_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Создание класса Stopwatch

Наконец мы готовы начать писать код. Создадим класс для работы с базой данных в файле stopwatch.php и начнем с конструктора, который устанавливает два приватных свойства, где мы будем хранить ID чата и соединение с MySQL:

class Stopwatch

Источник: code.tutsplus.com

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