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

 

Здравствуйте!

    В первую очередь хочу поблагодарить за статью!

    В процессе работы появился один вопрос, на который я пока не нашел ответа: как можно сделать в ответе бота частично выделенный жирным текст?

Благодарю.

 
Mihail Musihin:

Здравствуйте!

    В первую очередь хочу поблагодарить за статью!

    В процессе работы появился один вопрос, на который я пока не нашел ответа: как можно сделать в ответе бота частично выделенный жирным текст?

Благодарю.

int SendMessage(const string _channel_name,
                   const string _text,
                   const bool   _as_HTML=false,
                   const bool   _silently=false)
myBot.SendMessage(InpChannelName,"<b>Test message</b> from my EA",true);


 

Добрый день.

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

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

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...
 

Помогите, пожалуйста, советом. В настройках терминала разрешение "https://api.telegram.org" добавил. Через браузер запрос выполняется успешно https://api.telegram.org/bot<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...
 
Всем спасибо! Разобрался.. Видимо проблема в РФ и блокировках 
Причина обращения: