Обсуждение статьи "Создание бота для Telegram на языке MQL5" - страница 13

 

Добрый день.

Может ли бот принимать сообщения через канал? 

Я назначил бота администратором. Новые сообщения он видит, но текст всегда пустая строка.

msg.message_text=item["message"]["text"].ToStr();
msg.message_text=StringDecode(msg.message_text);
Здесь всегда пустая строка.
 
leonerd:

Добрый день.

Может ли бот принимать сообщения через канал? 

Я назначил бота администратором. Новые сообщения он видит, но текст всегда пустая строка.

Здесь всегда пустая строка.

В поле channel_post всё приходит https://core.telegram.org/bots/api#update.

Неплохо бы доработать класс. Добавлю в CCustomMessage поле channel_post_text. Ну и заполнять его в GetUpdates().

Telegram Bot API
  • core.telegram.org
The Bot API is an HTTP-based interface created for developers keen on building bots for Telegram. To learn how to create and set up a bot, please consult our Introduction to Bots and Bot FAQ. Recent changes April 14, 2019 Added support for native polls: added the object Poll, the methods sendPoll and stopPoll and the field poll in the Message...
 
            msg.chat_id=item["message"]["chat"]["id"].ToInt();

            msg.chat_first_name=item["message"]["chat"]["first_name"].ToStr();
            msg.chat_first_name=StringDecode(msg.chat_first_name);

            msg.chat_last_name=item["message"]["chat"]["last_name"].ToStr();
            msg.chat_last_name=StringDecode(msg.chat_last_name);

            msg.chat_username=item["message"]["chat"]["username"].ToStr();
            msg.chat_username=StringDecode(msg.chat_username);

            msg.chat_type=item["message"]["chat"]["type"].ToStr();
 Только почему-то для чата из канала все эти поля по нулям.
 
leonerd:
 Только почему-то для чата из канала все эти поля по нулям.

Для канала надо смотреть поле channel_post, а не message. channel_post тоже типа Message. 

Текст у меня приходит:

msg.channel_post_text=item["channel_post"]["text"].ToStr();
msg.channel_post_text=StringDecode(msg.channel_post_text);

А другие поля нет:

msg.channel_post_chat_id=item["channel_post"]["chat"]["id"].ToInt();
//---
msg.channel_post_from_first_name=item["channel_post"]["from"]["first_name"].ToStr();     
msg.channel_post_from_first_name=StringDecode(msg.channel_post_from_first_name);
 
//---
            msg.channel_post_text=item["channel_post"]["text"].ToStr();
            msg.channel_post_text=StringDecode(msg.channel_post_text);

            long msg_id=item["channel_post"]["message_id"].ToInt();
            long msg_date=item["channel_post"]["date"].ToInt();



            //---
            msg.channel_post_chat_id=item["channel_post"]["chat"]["id"].ToInt();
            //---
            msg.channel_post_from_first_name=item["channel_post"]["from"]["first_name"].ToStr();     
            msg.channel_post_from_first_name=StringDecode(msg.channel_post_from_first_name);

В первые три поля приходит значение. А в последние три поля (для полей типа Chat и From) не приходит. Куда смотреть?
 

Разобрался.

channel_post.chat_id - может быть отрицательным, а я его за кривое значение принимал.

channel_post.from.first_name - from - необязательное поле, может быть и без него. В общем, всё есть тут https://core.telegram.org/bots/api#message

Telegram Bot API
  • core.telegram.org
The Bot API is an HTTP-based interface created for developers keen on building bots for Telegram. To learn how to create and set up a bot, please consult our Introduction to Bots and Bot FAQ. Recent changes April 14, 2019 Added support for native polls: added the object Poll, the methods sendPoll and stopPoll and the field poll in the Message...
 

Я попробовал этот код в OnInit(), чтобы отправить сообщение на мой канал. но он не работает, не могли бы вы дать мне пример, как отправить сообщение на канал или в групповой чат?

спасибо

bot.SendMessage("t.me/BotSignals", "Hello",false,false);

 

Помогите, пожалуйста, советом. В настройках терминала разрешение "https://api.telegram.org" добавил. Через браузер запрос выполняется успешно https://api.telegram.org/bot&lt;token>/sendMessage?chat_id=<id>&text=test 

Строки кода ниже выполняются, но SendMessage возвращает код ошибки 5203 (Ошибка в результате выполнения HTTP запроса). Метод bot.GetMe() возвращает такую же ошибку 5203. 

В чем может быть проблема? Спасибо!

      bot.Token("<token>"); //set token
  int _res = bot.SendMessage(<id>, "test"); //your ID
Bots: An introduction for developers
Bots: An introduction for developers
  • core.telegram.org
Bots are third-party applications that run inside Telegram. Users can interact with bots by sending them messages, commands and inline requests. You control your bots using HTTPS requests to our bot API. 1. What can I do with bots? To name just a few things, you could use bots to: Get customized notifications and news. A bot can act as a smart...
 
Всем спасибо! Разобрался.. Видимо проблема в РФ и блокировках 
 
День добрый взял бота который будет делиться сигналами через группу. Запустил код через MetaEditor изменил и не могу скомпилировать. Выдало такое кол-во ошибок 
Файлы:
Screenshot_3.jpg  227 kb