Diskussion zum Artikel "Die Erstellung des Bots für Telegram in der Sprache MQL5" - Seite 13

 

Guten Tag.

Kann der Bot Nachrichten über den Kanal empfangen?

Ich habe den Bot als Administrator zugewiesen. Neue Nachrichten sieht er, aber der Text ist immer eine Leerzeile.

msg.message_text=item["message"]["text"].ToStr();
msg.message_text=StringDecode(msg.message_text);
Hier ist es immer eine leere Zeile.
 
leonerd:

Guten Tag.

Kann der Bot Nachrichten über den Kanal empfangen?

Ich habe den Bot als Administrator zugewiesen. Er sieht neue Nachrichten, aber der Text ist immer eine Leerzeile.

Hier ist es immer eine Leerzeile.

Im channel_post Feld kommt alles in https://core.telegram.org/bots/api#update.

Es wäre schön, wenn man die Klasse verfeinern könnte. Ich werde das channel_post_text Feld zu CCustomMessage hinzufügen. Und fülle es in 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();
Nur aus irgendeinem Grund für Chat aus dem Kanal alle diese Felder sind Null.
 
leonerd:
Nur aus irgendeinem Grund sind alle diese Felder für Chats aus einem Channel null.

Für einen Channel sollten Sie sich das channel_post Feld ansehen, nicht das message Feld. channel_post ist auch vom Typ Nachricht.

Ich bekomme den Text:

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

Aber andere Felder sind es nicht:

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);

Die ersten drei Felder erhalten den Wert. Aber die letzten drei Felder (für Felder wie "Chat" und "Von") erhalten den Wert nicht. Wo ist zu suchen?
 

Ich habe es herausgefunden.

channel_post.chat_id - kann negativ sein, und ich habe es für einen krummen Wert gehalten.

channel_post.from.first_name - von - optionales Feld, kann auch ohne sein. Im Allgemeinen ist alles hier 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...
 

Ich habe versucht, diesen Code in OnInit() eine Nachricht an meinen Kanal zu senden. aber es funktioniert nicht, können Sie mir ein Beispiel geben, wie man eine Nachricht an einen Kanal oder Gruppenchat sendet?

danke

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

 

Bitte helfen Sie mir mit Ratschlägen. Ich habe die BerechtigungTerminaleinstellungen hinzugefügt. Über den Browser wird die Anfrage erfolgreich ausgeführt https://api.telegram.org/bot&lt;token>/sendMessage?chat_id=<id>&text=test.

Die folgenden Codezeilen werden ausgeführt, aber SendMessage gibt den Fehlercode 5203 (Fehler bei der Ausführung einer HTTP-Anfrage) zurück. Die Methode bot.GetMe() gibt denselben Fehlercode 5203 zurück.

Wo könnte das Problem liegen? Vielen Dank!

      bot.Token("<token>"); //Zeichen setzen
  int _res = bot.SendMessage(<id>, "test"); //Ihre 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...
 
Ich danke Ihnen allen! Ich habe es herausgefunden. Ich denke, das Problem ist RF und Blockierung.
 
Hallo, ich habe einen Bot genommen, der Signale durch eine Gruppe teilen wird. Ich habe den Code durch MetaEditor laufen lassen, ihn geändert und kann ihn nicht kompilieren. Ich habe so viele Fehler
Dateien:
Screenshot_3.jpg  227 kb