Id в Telegram bot

ptbot — модуль для создания Telegram-ботов. Он умеет отправлять сообщения, редактировать ранее отправленные и реагировать на входящие сообщения от пользователя.

Основан на библиотеке python-telegram-bot , но это урезанная версия для того чтобы начать писать ботов не вникая в сложные концепции. Хорошо подойдёт для начала.

Как начать пользоваться?

Установите библиотеки

Вам понадобится библиотека python-telegram-bot . Установите её в Repl или на своё компьютер, смотря где вы программируете.

Скачайте код

Создайте файл с названием ptbot.py и положите рядом со своей программой.

Затем скопируйте в него этот код.

Создайте бота

Для запуска библиотеки нужно достать пару ключей доступа.

Прежде всего вам нужен API ключ от Telegram-бота. Его можно получить у Отца ботов. Введите команду /newbot в чате с ним и следуйте инструкциям.

Свяжитесь с ботом. Найдите его в Telegram и отправьте ему любое сообщение. Telegram требует, чтобы пользователь написал боту первым, чтобы боты не могли рассылать спам всем подряд.

How to get ID Channel/Group and Token Telegrambot

Узнайте свой id в Telegram

Его вам скажет Бот-справочник. Он нужен чтобы подсказать боту как вас найти.

Отправьте первое сообщение

Скопируйте код и поменяйте значения TOKEN и CHAT_ID , запустите программу.

import ptbot TG_TOKEN = ‘958423683:AAEAtJ5Lde5YYfu8GldVhSGCAsxAYbzUIYg’ # подставьте свой ключ API TG_CHAT_ID = ‘228593533’ # подставьте свой ID bot = ptbot.Bot(TG_TOKEN) bot.send_message(TG_CHAT_ID, «Бот запущен»)

От бота в Telegram придёт сообщение:

Проблемы с установкой

При запуске кода вы можете столкнуться с проблемой NewConnectionError. Failed to establish a new connection . В консоли она выглядит так:

WARNING:telegram.vendor.ptb_urllib3.urllib3.connectionpool:Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by ‘NewConnectionError(‘: Failed to establish a new connection: [Errno 101] Network is unreachable’)’: /bot. /sendMessage

Такое случается если сервера Telegram заблокированы провайдером. Решается включением VPN. Браузерный VPN здесь не поможет, включите VPN сразу на всю операционную систему. Вот подборка из 10 лучших бесплатных VPN-сервисов.

Что умеет библиотека

Ниже описание всех методов бота. Не обязательно читать сверху вниз, пользуйтесь панелью навигации справа сверху.

Отправка сообщения

Вот как можно отправить пользователю сообщение с текстом “Моё сообщение”:

import ptbot bot = ptbot.Bot(«Мой токен») # подставьте свой ключ API bot.send_message(«Мой id чата», «Моё сообщение»)

Не забудьте заменить Мой токен и Мой id чата на свои, подробнее см. Отправьте первое сообщение.

Редактирование сообщения

Метод send_message возвращает id сообщения, только что отправленного пользователю. Зная id сообщения вы можете его редактировать. Как получить id :

message_id = bot.send_message(«Мой id чата», «Моё сообщение») print(‘ID сообщения’, message_id)

И вот как редактировать:

bot.update_message(«Мой id чата», message_id, «Новое сообщение»)

Запуск бота

Метод run_bot нужен для трёх других методов:

  • Создание таймера
  • Создание периодического таймера
  • Ожидание сообщения пользователя

Метод run_bot ничего не возвращает. Он никогда не завершает своей работы. Метод вводит программу в “режим ожидания сообщений” и может работать вечно:

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

bot = ptbot.Bot(«Мой токен») bot.run_bot() print(«Эта строка кода никогда не запустится»)

Последняя строчка кода никогда не выведет на экран сообщение из-за этого “режима ожидания”.

Всегда вызывайте run_bot в конце своей программы.

Создание таймера

Метод create_timer() создаёт таймер, на несколько секунд. Этот метод не работает без метода run_bot.

Метод требует два аргумента:

  1. Сколько секунд ждать
  2. Функция-коллбэк, которая запустится через это количество секунд.

Самый простой вариант использования:

import ptbot def notify(): print(«Функция запустилась, но через 5 секунд!») bot = ptbot.Bot(«Мой токен») bot.create_timer(5, notify) bot.run_bot()

Когда вы запустите этот код, создастся таймер. Он подождёт 5 секунд и после этого запустит функцию notify : в консоль выведется “Функция запустилась!”.

Создание периодического таймера

Метод create_countdown() ведёт обратный отсчёт, каждую секунду запуская функцию-коллбэк. Этот метод не работает без метода run_bot.

Метод требует 2 аргумента:

  1. Сколько секунд повторять задачу
  2. Функция-коллбэк, которая будет запускаться каждую секунду, пока не выйдет время.

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

import ptbot def notify_progress(secs_left): print(«Осталось секунд:», secs_left) bot = ptbot.Bot(«Мой токен») bot.create_countdown(5, notify_progress) bot.run_bot()

Этот код каждую секунду будет печатать Осталось секунд: 5 в течение 5 секунд:

Ожидание сообщения пользователя

Метод reply_on_message() умеет отвечать на сообщения пользователей. Этот метод не работает без метода run_bot.

Просто передайте ему функцию и он будет вызывать её каждый раз, когда боту что-нибудь написали. Первым аргументом он передаст функции chat_id пользователя, который ему написал. Второй аргумент – текст сообщения от пользователя.

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

import ptbot def reply(chat_id, text): print(«Привет! Пользователь с ID <> написал мне: <>».format(chat_id, text)) bot = ptbot.Bot(«Мой токен») bot.reply_on_message(reply) bot.run_bot()

Если пользователь напишет боту Ты ждешь? , то тот выведет в треминал Привет! Ты написал мне: Ты ждешь? .

Внутри функции def reply(text): можно свободно дописывать любой код. Название у функции тоже можно менять. Вот несколько примеров:

def log_all_messages(chat_id, text): print(«Получил сообщение от пользователя <>: <>».format(chat_id, text)) bot = ptbot.Bot(«Мой токен») bot.reply_on_message(log_all_messages) bot.run_bot()
def say_hello(chat_id, text): message_id = bot.send_message(chat_id, «Привет! Я здесь, я работаю!») print(‘Я отправил сообщение #’, message_id) bot = ptbot.Bot(«Мой токен») bot.reply_on_message(say_hello) bot.run_bot()

Общение между методами

Методы могут передавать данные между собой. Например, вы хотите вывести сообщение пользователя в функции notify :

import ptbot def reply(chat_id, text): bot.create_timer(5, notify) def notify(): bot.send_message(chat_id, «Прошло 5 секунд!») bot = ptbot.Bot(TOKEN) bot.reply_on_message(reply) bot.run_bot()

Этот код выдаст ошибку, т.к. функция notify не может “украсть” переменную chat_id у функции reply . Но в ptbot есть решение для такого:

import ptbot def reply(chat_id, text): bot.create_timer(5, notify, chat_id=chat_id) def notify(chat_id): bot.send_message(chat_id, «Прошло 5 секунд!») bot = ptbot.Bot(TOKEN) bot.reply_on_message(reply) bot.run_bot()

Изменения произошли в двух местах:

    Функция notify теперь требует аргумент chat_id :

def notify(chat_id):
bot.create_timer(5, notify, chat_id=chat_id)

Так же может делать и другой метод, create_countdown :

import ptbot def reply(chat_id, text): bot.create_countdown(5, notify, chat_id=chat_id) def notify(secs_left, chat_id): bot.send_message(chat_id, «Осталось <> секунд!».format(secs_left)) bot = ptbot.Bot(TOKEN) bot.reply_on_message(reply) bot.run_bot()

Попробуйте бесплатные уроки по Python

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

Переходите на страницу учебных модулей «Девмана» и выбирайте тему.

Еще по теме:  Удаленный аккаунт теперь в Telegram что это

Источник: dvmn.org

КАК УЗНАТЬ CHAT ID TELEGRAM БОТА

Если вы создали бота в Telegram, то для его настройки, необходимо узнать chat id, который будет использоваться во время работы бота.

Существует несколько способов узнать chat id. Один из них – написать боту, для которого хотите узнать chat id, и с помощью специального API получить его в ответе.

Другой способ – использовать библиотеки для работы с Telegram API, такие как Telebot или PyTelegramBotAPI, и вызвать метод, который вернет информацию о боте, включая chat id.

Вышеупомянутые способы помогут найти chat id Telegram бота быстро и без лишних усилий.

Как узнать свой Telegram ID для администрирования бота?

Как узнать свой ID telegram за 20 секунд (без воды) ссылка на бота в описании

СОЗДАЁМ TELEGRAM БОТА С БАЗОЙ ДАННЫХ — СОХРАНЕНИЕ ПОЛЬЗОВАТЕЛЕЙ — SQLITE3 — PYTHON

УЗНАТЬ ID TELEGRAM ► Как узнать ID телеграм канала, группы

ЧИТАЕМ ТВОЮ ПЕРЕПИСКУ В INSTAGRAM, WHATSAPP И TELEGRAM — Фактчекинг

Как создать умный бот в telegram — OpenAI (GPT-4) в телеграмм

Как узнать айди группы в телеграмме / Как узнать id группы в тг

Как узнать ID СКАМЕРА — Как узнать ID пользователя Телеграм

Как получить API token и ID чата в телеграм

Как определить ID группы или канала в Telegram?

Источник: tgme.pro

Telegram bot для Linux сервера: мониторинг, уведомления, управление

date

23.01.2020

user

VyacheslavK

directory

CentOS, Linux

comments

комментариев 8

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

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

Создание чат-бота в Telegram

BotFather создать нового бота telegram

Нажмите START. Чтобы создать нового бота, выберете в меню /newbot, введите имя бота в формате “имя_bot». После создания бота, вы получите API токен бота, который нужен будет в дальнейшей настройке.

получить API токен бота телеграм

Теперь нужно узнать user_id — это ID часа с ботом, в который он будет отправлять уведомления. Перейдите в ваш с ним чат и нажмите старт и отправить любой символ. После этого в браузере перейдите по адресу:

https://api.telegram.org/bot/getUpdates — где это API который выдал BotFather.

user_id бота telegram

На скриншоте выделен ваш ID.

Итак, мы создали бота в Telegram и получили авторизационные данные.

Отправка в чат Telegram уведомлений с сервера

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

Для отправки сообщения в чат, нужно использовать следующий URL:

# curl -s -X POST https://api.telegram.org/bot944496485:AAEtGaGCVrQ7d26Rc3r_cqXPIhrKVokh8e4/sendMessage -d chat_id=336116180 -d text=»Доброе утро, страна»

отправка сообщений в telegram бот через api и url

Для чего можно использовать такие Telegram уведомления? Например, при создании резервной копии вы можете отправлять уведомления о ее создании или же отправлять ссылку на скачивание копии в чат с ботом. Вы можете отправлять себе в Telegram уведомления с информацией о сбоях в системе. Можно добавить в крон выполнение каких-либо проверок с последующей отправкой в Telegram.

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

Еще пример использования подобных уведомлений:

# curl -s -X POST https://api.telegram.org/bot944496485:AAEtGaGCVrQ7d26Rc3r_cqXPIhrKVokh8e4/sendMessage -d chat_id=336116180 -d text=» User $(whoami) logged into $(hostname) on $(date) from $(echo $SSH_CLIENT | awk ‘< print $1>’)» /dev/null 2>Development tools» -y

# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel -y
# ./configure
# make
# make install

установка Python 3 в centos 7

Создайте симлинк для Python:

# ln -s /usr/local/bin/python3 /usr/bin/python3

И установите ПО для самого бота:

# pip3 install python-telegram-bot —upgrade

pip3 install python-telegram-bot

Теперь скачайте и распакуйте к себе на сервер в каталог root/admin три файла из архива telegram_bot.zip:

Рассмотрим файл config.py. В нем нам нужно указать token(API) и ID вашего чата с ботом, а также путь до директорий с бэкапами и директории, размер которой вы будете в дальнейшем проверять:

config.py настройки telegram бота

Файл bot.sh не требует настройки, в нем лишь указываем путь до bot.py:

bot.sh

И самый основной файл, который собственно и позволит нам управлять сервером, это bot.py. В нем описаны функции, которые будут доступны в чате с ботом и собственно туда, мы можем добавлять свой собственный функционал. Например, в первом блоке описываются доступные команды бота в чате:

python скрипт для telegram бота

Тут описываются все функции, которые будут доступны, после ввода команды /help.

Ниже описывается сама функция, например,

#функция команады ifconfig def ifconfig(bot, update): reload(config) user = str(update.message.from_user.id) if user in config.admin: #если пользовательский id в списке admin то команда выполняется run_command(«ifconfig») bot.sendMessage(chat_id=update.message.chat_id, text=textoutput)

И эту функцию, нужно описать как команду:

ifconfig_handler = CommandHandler(‘ifconfig’, ifconfig) dispatcher.add_handler(ifconfig_handler)

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

При знакомстве с ботом я попытался добавить собственную команду, например для проверки Apache:

# service httpd status

Но только через настройку данного файла это не сработало. Как я понял, здесь можно выполнить только команду описанную одним словом или символами. Я решил проблему создав файл apache_status.sh с содержимым:

#!/bin/bash
service httpd status

И создал на него симлинк:

# ln -s /root/admin/apache_status.sh /usr/local/sbin/apachestatus

Теперь при вызове команды apachestatus, у меня выводит статус веб-сервера apache:

apachestatus

В файле bot.py я заполнил все три блока, согласно других функций. Чтобы bot заработал, нужно запустить файл bot.sh. Для удобства, создадим отдельный сервис для Telegram бота. Создаем нужный файл и выставляем права:

# touch /etc/systemd/system/telegram-bot.service
# chmod 664 /etc/systemd/system/telegram-bot.service

После чего заходим в файл сервиса:

И добавляем содержимое:

[Unit] Description=Telegram bot After=network.target [Service] ExecStart=/root/admin/bot.sh [Install] WantedBy=multi-user.target

# systemctl start telegram-bot.service
# systemctl enable telegram-bot.service
# systemctl status telegram-bot.service

Теперь, если в чате с вашим ботом ввести /help, вы получите список доступных команд.

список доступных команд в telegram боте

Например, в данный момент у меня на сервере остановлен веб-сервер Apache:

команда состояния сервера в telegram боте

Запустим его на сервере и проверим статус через Telegram:

проверка статуса apache из telegram

Еще несколько примеров выполнения команд:

команды для сервера linux в telegram боте

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

Так же хотел бы заметить, что авторизация сервера с ботом происходит именно по ID и token(API) (любой другой человек, не зная ваших данных, подключиться не сможет).

На момент выпуска статьи, тестовый бот удален.

Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

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

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