Бот Телеграмм на виртуальной машине код

Telegram-бот без сторонних библиотек

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

Сделаем то же самое — ответ на сообщения просто задом-наперёд.

Для начала нужно создать бота. Чтобы сделать это, нужно написать отцу ботов в телеграмме команду /newbot
После чего он спросит имя бота и его логин, который обязательно должен кончаться на bot.
Например: evilbot, coder_bot, samplebot и т.д.

Следом вы получите ссылку на своего бота и токен. Боту можете написать даже сейчас, но он ничего Вам не ответит.

Telegram бот на python aiogram #6 FSM Машина состояний админка для бота


Непорядок! Давайте исправим это.
Нам нужно создать файлы webhook.php и tg.class.php.

Ниже будут приведён полный код этих файлов с комментариями

$body = file_get_contents(‘php://input’); //Получаем в $body json строку $arr = json_decode($body, true); //Разбираем json запрос на массив в переменную $arr function cir_strrev($stroka) < //Так как функция strrev не умеет нормально переворачивать кириллицу, нужен костыль через массив. Создадим функцию preg_match_all(‘/./us’, $stroka, $array); return implode(»,array_reverse($array[0])); >include_once (‘tg.class.php’); //Меж дела подключаем наш tg.class.php //Сразу и создадим этот класс, который будет написан чуть позже //Сюда пишем токен, который нам выдал бот $tg = new tg(‘000000000:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA’); $sms = $arr[‘message’][‘text’]; //Получаем текст сообщения, которое нам пришло. //О структуре этого массива который прилетел нам от телеграмма можно узнать из официальной документации. //Сразу и id получим, которому нужно отправлять всё это назад $tg_id = $arr[‘message’][‘chat’][‘id’]; //Перевернём строку задом-наперёд используя функцию cir_strrev $sms_rev = cir_strrev($sms); //Используем наш ещё не написанный класс, для отправки сообщения в ответ $tg->send($tg_id, $sms_rev); exit(‘ok’); //Обязательно возвращаем «ok», чтобы телеграмм не подумал, что запрос не дошёл

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

tg.class.php:

token = $token; //Забиваем в переменную токен при конструкте класса > public function send($id, $message) < //Задаём публичную функцию send для отправки сообщений //Заполняем массив $data инфой, которую мы через api отправим до телеграмма $data = array( ‘chat_id’ =>$id, ‘text’ => $message, ); //Получаем ответ через функцию отправки до апи, которую создадим ниже $out = $this->request(‘sendMessage’, $data); //И пусть функция вернёт ответ. Правда в данном примере мы это никак не будем использовать, пусть будет задаток на будущее return $out; > public function request($method, $data = array()) < $curl = curl_init(); //мутим курл-мурл в переменную. Для отправки предпочтительнее использовать курл, но можно и через file_get_contents если сервер не поддерживает curl_setopt($curl, CURLOPT_URL, ‘https://api.telegram.org/bot’ . $this->token . ‘/’ . $method); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, ‘POST’); //Отправляем через POST curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); //Сами данные отправляемые $out = json_decode(curl_exec($curl), true); //Получаем результат выполнения, который сразу расшифровываем из JSON’a в массив для удобства curl_close($curl); //Закрываем курл return $out; //Отправляем ответ в виде массива > >

Всё! Всё что осталось — это указать в настройках бота ссылку на наш webhook.php, на который будут приходить уведомления от телеграмма. Для этого нужно перейти по ссылке:

Источник: evilcoder.ru

Telegram-бот: от первой строчки до размещения

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

Что этот бот будет делать?

Отправлять письма

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

Сохранять всякое разное

Я очень много использую Telegram и часто натыкаюсь там на интересные для меня ссылки или просто на полезную информацию. Хотелось бы, чтобы бот сохранял все то, что я ему пересылаю, в базе данных SQL.

Что мы будем использовать при создании бота

Для API Telegram есть оболочки практически на любом языке программирования. Начиная от Python, PHP и Java и заканчивая Node.js. Мы, разумеется, будем использовать Python. Код данной оболочки находится здесь, можете убедиться сами. Также можно поучаствовать в развитии данного проекта (если сможете, конечно). Оболочки для других языков можно найти здесь.

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

Наш бот

Чат с BotFather для получения ключей API

Создание Telegram-бота это весьма забавный процесс так как, собственно, весь он строится на вашем общении с Telegram-ботом. Зовут этого бота BotFather (Бот-Отец). В приложении Telegram его можно найти по имени и начать с ним беседу.

Для начала беседы наберите /start .

Вы увидите список команд, при помощи которых можно создавать боты, редактировать их и управлять ними. Так как мы зашли в первый раз, то выбираем /newbot .

После введения команды /newbot вам предстоит выбрать имя и ник (username) для вашего бота. Имя — это то, как пользователи будут видеть этого бота в своем контакт-листе. А ник — имя, по которому этот бот можно будет найти в приложении Telegram. Это то же самое как и ник в Twitter, он должен быть уникальным, и чем короче, тем лучше.

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

Код

Начнем с того, что импортируем все необходимое.

from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, ConversationHandler from telegram import ReplyKeyboardMarkup, ReplyKeyboardRemove import logging import sqlite3 from mail import send_mail from sensitive import tok, user_id, name, username

Предназначение библиотек logging и sqlite3 вполне видно из их названий. Они будут использоваться для логирования и сохранения всего, что нам потребуется. В файле sensitive содержаться мои учетные данные, а в telegram.ext хранятся все необходимые обработчики.

Updater — это класс, в котором используется telegram.ext.Dispatcher. Он предоставляет интерфейс для telegram.Bot, чтобы можно было сосредоточиться исключительно на программировании бота. Его цель — получать обновления от Telegram и доставлять их указанному диспетчеру. Он также запускается в отдельном потоке, поэтому пользователь может взаимодействовать с ботом, например, из командной строки. Диспетчер поддерживает обработчики для различных типов данных: обновления от Telegram, основные текстовые команды и даже произвольные типы. Класс Updater может быть использован как служба опроса, а для получения обновлений можно использовать вебхук (webhook). Это достигается с помощью классов WebhookServer и WebhookHandler .

Еще по теме:  В Телеграме не видны медия

MessageHandler — класс для обработки Telegram-сообщений. Они могут содержать текст, различные медиафайлы или обновления статуса.

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

Команды

Для каждой команды написана отдельная функция. А все остальное — для работы с SQL и строками.

Email

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

Как вы могли заметить, функцию send_mail() я импортировал из модуля mail . Для отправки почтовых сообщений используется протокол SMTP.

def send_mail(to, subject, body, my=me): smt = smtplib.SMTP(‘smtp.gmail.com’, 587) smt.ehlo() smt.starttls() smt.login(user=my, password=pwd) sub = subject body = body message = «Subject: » + sub + «n» + body + «n» smt.sendmail(my, to, message) smt.quit()

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

Вот и всё?

Вообще-то нет. Вам еще осталось все это запустить.

def main(): «»»Start the bot.»»» updater = Updater(TOKEN) dp = updater.dispatcher dp.add_handler(CommandHandler(«start», start)) dp.add_handler(CommandHandler(«help», help)) dp.add_handler(CommandHandler(«add_event», add_event)) dp.add_handler(CommandHandler(«view_events», view_events)) dp.add_handler(CommandHandler(«remove_event», remove_event)) email_handler = ConversationHandler( entry_points=[CommandHandler(’email’, email)], states=< TO: [MessageHandler(Filters.text, to, pass_user_data=True)], SUBJECT: [MessageHandler(Filters.text, subject, pass_user_data=True)], MESSAGE: [MessageHandler(Filters.text, body, pass_user_data=True)] >, fallbacks=[CommandHandler(‘cancel’, cancel)] ) dp.add_handler(email_handler) dp.add_error_handler(error) updater.start_polling() updater.idle()

Размещение кода

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

  1. Pythonanywhere : бесплатно и просто. Откройте терминал и в нем запустите файл с вашим ботом. Но не ждите, что он будет работать долго.
  2. Heroku: не будем изобретать колесо. Вот здесь дана пошаговая инструкция по размещению на сервисе Heroku.

Вот здесь также собраны инструкции по размещению Telegram-ботов.

Источник: pythonist.ru

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