記事"MQL5言語でのTelegram用ボットの作成"についてのディスカッション - ページ 40

 
Yevhenii Levchenko:

各端末は独自のテレグラム・チャンネルを持っている。

問題はこの文章が理解できないことだと思います。私はTelegramとチャンネルにあまり詳しくないので、もう少し詳しく説明してもらえますか?

 
Sergey Kasirenko:

問題は、この文章が理解できないことだと思います。電報やチャンネルはあまり得意ではないので、もう少し詳しく説明してもらえますか?

テレグラムではチャンネルとグループを作ることができます。これが最初のもので、これがまさにチャンネルです。グループも作れますが...。

 
Yevhenii Levchenko:

Telegramではチャンネルとグループを作成できる。最初のものはチャンネルで、まさに私たちが話しているチャンネルです。グループも作成できますが...

ということは、グループやチャンネルと端末自体はどうやってリンクさせるのでしょうか? apiでボットではなく、グループに対してアドレスするのであれば...?構造がよくわからない。チャットボットに直接コマンドを書き込むと、Expert Advisorのターミナルではすべてキャッチされるのですが、別のターミナルに書き込むと、もちろんgetUpdatesは 機能しません。

しかし、他にどのようにテレグラムボットから データを取得できますか?

 
Sergey Kasirenko:

で、でも、グループやチャンネルと端末自体はどうやってつなげるんだろう? ボットをapiでアドレス指定するんじゃなくて、グループにアドレス指定するのなら...?構造がよくわかりません。チャットボットがあって、それに直接コマンドを書くと、ターミナルではExpert Advisorがすべてキャッチしてくれるのですが、それを別のターミナルに置くと、当然getUpdatesは 機能しません。

しかし、他にどのようにテレグラムボットからデータを取得できますか?

端末ごとにチャンネルを作る。あるいはグループでもいい。あなたのボットをリーダーとして追加します。チャンネルのアイコンを集めて配列にする。そしてシグナルを受信したら、配列の中を走り回り、すべてのチャンネルにメッセージを送る。すると、1つのチャンネルでやったのと同じように、アップデートをキャッチできる。各端末が自分のチャンネルを読むだけだ。

自分では試していないが)。

 
Yevhenii Levchenko:


僕自身はまだ試したことがないんだけどね。)

それは強いね))。でも、とにかくありがとう。何か考えて、掘って、試してみるよ

 
Sergey Kasirenko:

フォーラムの皆さん、この問題を解決する方法を教えてください。

{"ok":false, "error_code":409, "description": "Conflict: terminated by other getUpdates request; make sure that only one bot instance is running"} この問題に遭遇したことがある人はいますか?どこを調べればいいのか、何を見ればいいのか。

ボットロジックにエラーがあります。

私は多くのコピーを実行し、競合することなく毎秒アップデートを取得しています。グループやチャンネルとは関係ありません。

フィードバックをください。

 
Andrey Khatimlianskii:

ボットのロジックに何らかのバグがあります。

私は多くのコピーを実行し、競合することなく毎秒アップデートを取得しています。グループやチャンネルとは関係ありません。

フィードバックをください。

返信ありがとう。Andrey Voitenkoの記事で説明されているようにしました。私はボットを作成し、トークンを介してこのボットのメッセージにバインドし、関数getUpdatesを 使用してそれらを取得し、私は特に ProcessMessagesを無効にし 、実際には、コード全体はこのようになります:

//+------------------------------------------------------------------+
| オンタイマー|
//+------------------------------------------------------------------+
void OnTimer()
  {
//--- エラーメッセージを表示する
   if(getme_result!=0)
     {
      comment.SetText(0,"Error: "+GetErrorDescription(getme_result),clrRed);
      if(getme_result==4060) comment.SetText(1,"https://api.telegram.org",clrRed);
      comment.Show();
      return;
     }
//--- ボット名を表示
   /Comment("ボット名: ",bot.Name()));
   if(Flag_Init)
   {
     Flag_Init=false;
     bot.UserNameFilter(sName);
     comment.SetText(0,StringFormat("%s v.%s",EXPERT_NAME,EXPERT_VERSION),clrWhite);
     //comment.SetText(1, "ボット名:" +bot.Name(),clrWhite);
     comment.Show();
   }  
//--- メッセージを読む
   bot.GetUpdates();
//--- メッセージの処理
   //bot.ProcessMessages();
  }
//+------------------------------------------------------------------+

そして、このボットのコピーを2つ(今は実験を簡単にするために同じターミナルに置いている)置くとすぐに、この帽子が出てくることがわかった:

同じトークンでアンケートを呼び出すことはできないようです。なぜなら、一度読み込むと、データが受信されたことになり、次のコピーのボットにはこのエラーが表示されるからです。

しかし、どのように別のそれを整理するために、私は知らない、多分あなたはそれが企業秘密でない場合は、秘密を共有し、全く異なる方法でそれを行っている

 
Sergey Kasirenko:

もし企業秘密でないのなら、その秘密を教えてほしい。

企業秘密でなければ、その秘密を教えてください。)

私はプライベート・メッセージであなたにこう書いた。

 

同僚の皆さん、こんばんは。

メッセージのテキストにスマイリーを追加する方法を教えてください。

 
Andrey Kaunov:

同僚の皆さん、こんばんは。

メッセージのテキストにスマイリーを追加する方法を教えてください。

本当の男にはバイクと女が必要だ)

また禁止、わかった。