Telegram bot передать пользователю файл

Уведомления, получаемые от систем мониторинга, стали неотъемлемой частью специалистов занимающихся сопровождением информационных систем. Однако, мир не стоит на месте и все чаще появляются новые способы оповещения. К традиционным средствам оповещения о состоянии информационных систем: электронная почта и SMS добавились новые средства доставки уведомлений, такие как мессенджеры. Наибольшей популярностью, для этой цели, у системных администраторов стал мессенджер Telegram. А в системах мониторинга появилась возможность настраивать интеграцию с мессенджерами, с целью оперативной рассылки уведомлений.
Но что делать если централизованной системы мониторинга нет, или в ней нет особой необходимости, а потребность получать уведомления в Telegram есть.
Ниже описан один из способов пошаговой настройки для отправки сообщений в Telegram используя PowerShell.

Допустим наш бот будет называться UserMan.ru и иметь идентификатор UserManRu_bot.

How To Create A Telegram Bot In Python For Beginners (2023 Tutorial)

В ответ придет уникальный token для созданного бота, который будет использоваться при отправке сообщений.
Например боту UserManRu_bot был присвоен токен: 819090298:AAGjXP6QLPMkem9t2LflIHOAiE_Q58bA43g

2. Создать группу в Telegram и получить ее идентификатор
Для получения идентификатора группы необходимо создать новую группу в Telegram (или использовать имеющуюся группу) и добавить туда созданного бота UserManRu_bot. А для получения идентификатор учетной записи следует отправить боту UserManRu_bot сообщение /Start и любое тестовое сообщение.

Затем необходимо проверить историю обращений которые были к боту, используя запрос ниже:

https://api.telegram.org/bot/getUpdates
В случае с ботом UserManRu_bot это будет:
https://api.telegram.org/bot819090298:AAGjXP6QLPMkem9t2LflIHOAiE_Q58bA43g/getUpdates

В результате мы увидим уникальный идентификатор пользователя (наш идентификатор), он нам понадобится при отправке сообщений
А также уникальный идентификатор группы

<«ok»:true,»result»:[<«update_id»:146972760, «message»:<«message_id»:2,»from»:172489755,»is_bot»:false,»first_name»:»Test»,»last_name»:»Test»,»username»:»mynick»,»language_code»:»en»>,»chat»:,»date»:1553259454,»text»:»Test»>>,,»chat»:-347310642,»title»:»UserMan.ru»,»type»:»group»,»all_members_are_administrators»:true>,»date»:1553257968,»group_chat_created»:true>>]>

Из этого набора символов в формате JSON определяем ID пользователя, который отправил сообщение «Test»: 172489755
и Id группы в которую добавили бота: -347310642

  • token — Уникальный идентификатор, который был получен при создании бота
  • chat_id — уникальный идентификатор пользователя или группы. Он определяется запросом getUpdates
  • text — текст сообщения, которое необходимо направить

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

Вставляем этот запрос в адресную строку браузера и переходим по ссылке. Сообщение Hello должно прийти сообщение в группу.

Еще по теме:  Короткие юзы для ТГ

Convert files to any format | Powerful Telegram Bots

4. Сформировать скрипт для отправки сообщения
Чтобы сформировать и выполнить Web запрос выше, используя PowerShell, потребуется небольшой скрипт. Пример скрипта показан ниже:

$token = «819090298:AAGjXP6QLPMkem9t2LflIHOAiE_Q58bA43g» $chat_id = «-347310642» $text = «Hello World!» $URI = «https://api.telegram.org/bot» + $token + «/sendMessage?chat_id=» + $chat_id + «>ID чата всегда начинается со знака минус, а ID пользователя всегда без знака минус
5. Использование Proxy для отправки запроса
Если вы используете в своей сети прокси сервер или ваш провайдер запрещает доступ к telegram, то можно добавить к PowerShell командлету Invoke-WebRequest параметр -Proxy с указанием прокси сервера и порта, с которых разрешен доступ к Telegram. В этом случае скрипт будет иметь вид:
$token = «819090298:AAGjXP6QLPMkem9t2LflIHOAiE_Q58bA43g» $chat_id = «-347310642» $text = «Hello World!» $URI = «https://api.telegram.org/bot» + $token + «/sendMessage?chat_id=» + $chat_id + » + $text $Request = Invoke-WebRequest -URI ($URI) -Proxy «http://134.19.218.94:3128»

Где, 134.19.218.94:3128 — это один из примеров открытого прокси сервера.

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

Как отправить файлы из бота telegram?

Я пишу бот Telegram и мне нужно отправлять файлы пользователям. Я хочу получить file_id файлов, которые я хочу отправить. Я следую за этим ответом. Чтобы получить file_id , я должен отправить файл своему боту Telegram. Вопрос в том, как отправить файлы через мой бот самому себе? (может быть, с помощью API?)

cooleck 07 янв. 2019, в 20:51
Поделиться
Michael H. 07 янв. 2019, в 19:40

Нет, это не работает.
cooleck 07 янв. 2019, в 21:10
Вы не можете отправлять что-либо от бота боту (самому себе или другим ботам).
Ali Hashemi 09 янв.

2019, в 11:33
Показать ещё 1 комментарий
Поделиться:
telegram-bot
python-telegram-bot

1 ответ

  • Если файл уже хранится где-то на серверах Telegram, вам не нужно его повторно загружать: каждый объект файла имеет поле file_id, просто передайте этот file_id в качестве параметра вместо загрузки. Для файлов, отправляемых таким способом, ограничений нет.
  • Предоставьте Telegram URL-адрес HTTP для отправляемого файла. Telegram загрузит и отправит файл. Максимальный размер 5 МБ для фотографий и 20 МБ для других типов контента.
  • Разместите файл, используя multipart/form-data обычным способом, который файлы загружаются через браузер. Максимальный размер 10 МБ для фотографий, 50 МБ для других файлов
Еще по теме:  Можно ли найти человека в Телеграмме по имени без номера телефона

Вы можете использовать file_id только если вы уже отправили его кому-то ранее (используя URL или multipart/form-data).

Таким образом, если список файлов, которые вы хотите отправить, является предопределенным, «статическим», вы можете загрузить их все один раз, получить их file_id (например, с getUpdates метода getUpdates ), сохранить ассоциации между файлами и их соответствующими file_id и, наконец, ваш бот может использовать только file_id для общения с пользователями.

С другой стороны, если список возможных файлов варьируется, вы можете отправлять файлы только через URL или multipart/form-data.

Ivan Vinogradov 10 янв. 2019, в 08:41
Поделиться

Я выбрал третий способ: опубликовать файл, используя multipart / form-data. Я уже видел много вопросов об этом методе, и никто не мог ответить прямо на него. Так что вы можете подробно объяснить этот метод, пожалуйста?

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

Отправка сообщений в Telegram из PHP с обычного аккаунта в обход ограничений Bot API

Отправлять сообщения в Телеграм от бота очень просто, но есть крайне неудобная проблема: из-за ограничений Telegram Bot API бот не может писать первым. То есть, сначала пользователь, которому вы собрались что-нибудь отправить, должен первым написать вашему боту любое сообщение. Это ограничение вполне разумно и предотвращает спам сообщениями от ботов, но очень мешает честным людям. Например, отправлять сервисные сообщения с информацией о заказе в интернет-магазине.

Решение этой проблемы только одно: не использовать ботов. Придётся всё делать с обычного аккаунта.

Копаться в подробностях телеграмовского протокола MTProto не нужно, как оказалось, всё уже сделано до нас. Для PHP существует чудесная библиотека MadelineProto. Её мы и будем использовать, ниже пошаговая инструкция.

1. Регистрируем аккаунт, с которого будет осуществляться отправка сообщений. Можно использовать существующий (но лучше сделать новый).

2. Нужно зарегистрировать приложение. Просто формальная процедура. Для этого идём на сайт https://my.telegram.org/, логинимся через ваш аккаунт в Телеграме. Лучше всего, чтобы этот аккаунт не совпадал с акаунтом из пункта 1. Далее переходим на страницу https://my.telegram.org/apps, заполняем поля (платформа — Web, остальное не так важно), отправляем форму. Всё готово — приложение создано.

Еще по теме:  Поддельные чеки бот ТГ

Вас перенаправит на страницу настроек, запоминаем оттуда поля App api_id и App api_hash, остальное не нужно.

3. Теперь нужно установить библиотеку MadelineProto. Делается это очень легко. Создаём на веб-сервере папку, в неё помещаем php-файл (например, index.php) со следующим содержимым:

include ‘madeline.php’; $MP = new danogMadelineProtoAPI(‘session.madeline’); $MP->start();

Созданный скрипт должен иметь права на запись в папку. Библиотека требует PHP 7, но у меня всё завелось на PHP 5.6.

4. Запускаем созданный php-файл из браузера. На первом шаге выбираем Manually, затем вставляем значения полей App api_id и App api_hash из пункта 2, ждём, выбираем User, указываем телефонный номер акаунта из пункта 1, получаем на него смс, вводим код, готово — вы залогинились в Телеграме из вашего веб-приложения.

5. Переходим непосредственно к программированию. Весь код мы будем дописывать в имеющийся php-файл из пункта 3. У библиотеки MadelineProto есть хорошая документация, но некоторые моменты не очень понятны с первого раза.

Для отправки сообщений нужно использовать метод sendMessage :

$MP->messages->sendMessage([‘peer’ => », ‘message’ => »]);

Здесь peer — ID получателя, message — текст сообщения. И вот тут есть загвоздка: а где, собственно, взять айдишник пользователя, которому мы будем слать сообщения, если мы знаем только номер телефона?

Для этого проще всего добавить телефон получателя во внутренний список контактов. Делается это так:

$contact = [‘_’ => ‘inputPhoneContact’, ‘client_id’ => 0, ‘phone’ => ‘+79xxxxxxxxx’, ‘first_name’ => », ‘last_name’ => »]; $import = $MP->contacts->importContacts([‘contacts’ => [$contact]]); // $import[‘imported’][0][‘user_id’] — ID пользователя

Здесь мы указываем phone — номер телефона, first_name и last_name — имя и фамилия (можно указать любые, это не важно). В переменной $import[’imported’][0][’user_id’] будет содержаться ID нашего получателя. Хорошо бы его куда-нибудь сохранить у себя, чтобы можно было использовать дальше.

Использовать данный метод для рассылки спама бесполезно — аккаунт довольно быстро заблокируют по жалобам пользователей.

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

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