Telegram Flood prevention



有这样一个问题:我多次运行该程序,现在它抛出以下错误FloodException:Flood prevention。Telegram现在要求您的程序只有在73611秒后才能再次执行请求(TimeToWait属性(。如果你认为这个问题的罪魁祸首可能在于TLSharp的实现,请打开一个Github问题。我附上以下代码:

using System;
using System.Text;
using System.Windows.Forms;
using TeleSharp.TL;
using TeleSharp.TL.Messages;
using TLSharp.Core;
namespace tgBM
{
public partial class Form1: Form
{
string phone;
string code;
int n = 1;
StringBuilder sb = new StringBuilder ();
TelegramClient client = new TelegramClient (2646156, "08ec188e0bdee432e568120348f5f13a"); // create a client with parameters

public Form1 ()
{
InitializeComponent();
}
string str = "";
public async void authAsync()
{
var dialogs = (TLDialogs) await client.GetUserDialogsAsync();
foreach (var element in dialogs.Chats)
{
TLChat chat = element as TLChat;
if (element is TLChannel)
{
var offset = 0;
TLChannel channel = element as TLChannel;
if (channel.Title == "TOPLES")
{
TLChannel ch = element as TLChannel;
TLInputPeerChannel inputPeer = new TLInputPeerChannel() {ChannelId = ch.Id, AccessHash = (long) ch.AccessHash};
while (n! = 11)
{
try
{
TLChannelMessages res = await client.SendRequestAsync <TLChannelMessages>
(new TLRequestGetHistory() {Peer = inputPeer, Limit = 20, AddOffset = offset, OffsetId = 0});
var msgs = res.Messages;
if (res.Count> offset)
{
offset + = msgs.Count;
foreach (TLAbsMessage msg in msgs)
{
if (msg is TLMessage)
{
TLMessage message = msg as TLMessage;
str + = n.ToString () + " t" + message.Id + " t" + message.FromId + " t" + message.Message + Environment.NewLine;
}
if (msg is TLMessageService)
continue;
n ++;
}
}
else
break;
}
catch (Exception ex)
{
MessageBox.Show (ex.Message);
break;
}
}
}
}
textBox3.Text = str;
}
}
private async void button1_Click (object sender, EventArgs e)
{
phone = textBox1.Text;
await client.ConnectAsync (); // make a connection
var hash = await client.SendCodeRequestAsync(phone);
}
private async void button2_Click (object sender, EventArgs e)
{
code = textBox2.Text;
var user = await client.MakeAuthAsync(phone, await client.SendCodeRequestAsync(phone), code);
authAsync();
}
}
} 

在一条评论中,您说处于测试阶段。在这种情况下,您应该阅读https://core.telegram.org/api/auth#test-账户

根据本页,在限制FLOOD_WAIT错误风险的同时,有三种方法可以执行测试:

  • 连接到测试服务器而不是生产服务器(使用TLSharp似乎不可能(
  • 使用电话号码为99966XYYYY的测试帐户(仅在测试服务器上可用(
  • 以用户身份连接您用于创建API ID/Hash的电话号码

我可以用WTelegramClient完成所有这些(TLSharp不再维护,也不能再连接到Telegram服务器(

最新更新