Telegram" API开发工具"范围

时间:2017-11-20 10:12:41

标签: telegram

我尝试使用我的应用程序(使用TLSharp),但突然使用TelegramClient .SendCodeRequestAsync函数,我得到了这个例外:

  

"防洪。电报现在要求您的程序提出请求   仅在经过84894秒后再次(TimeToWait属性)。如果   你认为这个问题的罪魁祸首可能在于TLSharp' s   实施,打开Github问题"

等待84894秒后,再次显示此消息。 (我等了几次,但是消息没有区别:()

有人告诉我它的电报限制。这样对吗?  您最好将消息/文件发送到电报帐户吗?

2 个答案:

答案 0 :(得分:0)

我猜您正在关闭并多次启动应用程序或重复此方法。 10次​​之后,电报API会让您等待大约24小时以防止洪水。

这是电报限制,我的建议是:在拨打SendCodeRequestAsync()

之间等待2-3分钟

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