我尝试使用我的应用程序(使用TLSharp),但突然使用TelegramClient .SendCodeRequestAsync
函数,我得到了这个例外:
"防洪。电报现在要求您的程序提出请求 仅在经过84894秒后再次(TimeToWait属性)。如果 你认为这个问题的罪魁祸首可能在于TLSharp' s 实施,打开Github问题"
等待84894秒后,再次显示此消息。 (我等了几次,但是消息没有区别:()
有人告诉我它的电报限制。这样对吗? 您最好将消息/文件发送到电报帐户吗?
答案 0 :(得分:0)
我猜您正在关闭并多次启动应用程序或重复此方法。 10次之后,电报API会让您等待大约24小时以防止洪水。
这是电报限制,我的建议是:在拨打SendCodeRequestAsync()
答案 1 :(得分:0)
这可能是一个较晚的答案,但可以用作参考。第一个问题是电报API不允许每个电话号码每天发送代码请求超过5次。第二个问题是默认情况下用于TelegramClient
的共享会话文件。因此,您应该创建一个自定义会话管理器,以将每个电话号码会话分隔在一个单独的dat
文件中。
public class CustomSessionStore : ISessionStore
{
public void Save(Session session)
{
var dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Sessions");
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
var file = Path.Combine(dir, "{0}.dat");
using (FileStream fileStream = new FileStream(string.Format(file, (object)session.SessionUserId), FileMode.OpenOrCreate))
{
byte[] bytes = session.ToBytes();
fileStream.Write(bytes, 0, bytes.Length);
}
}
public Session Load(string sessionUserId)
{
var dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Sessions");
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
var file = Path.Combine(dir, "{0}.dat");
string path = string.Format(file, (object)sessionUserId);
if (!File.Exists(path))
return (Session)null;
var buffer = File.ReadAllBytes(path);
return Session.FromBytes(buffer, this, sessionUserId);
}
}
然后按如下所示创建您的TelegramClient
:
var client = new TelegramClient(apiId, apiHash, new CustomSessionStore(), phoneNumber);