'Telegram "API development tools" limits

I try to use my application (with TLSharp) but suddenly by using TelegramClient .SendCodeRequestAsync function, I get This Exception :

"Flood prevention. Telegram now requires your program to do requests again only after 84894 seconds have passed (TimeToWait property). If you think the culprit of this problem may lie in TLSharp's implementation, open a Github issue "

after waiting for 84894 sec, It show this message again. (I wait and try several times but messages doesn't differ:( )

Someone told me that its Telegram limits. Is it right? Do you Have better idea to Send message/file to a telegram account?



Solution 1:[1]

It might be a late answer but can be used as a reference. the first problem is that Telegram APIs don't let each phone number to send code request more than 5 times a day. the second problem is shared session file that you use for TelegramClient by default. so you should create a custom session manager to separate each phone number session in a separate dat file.

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

then create your TelegramClient like this:

var client = new TelegramClient(apiId, apiHash, new CustomSessionStore(), phoneNumber);

Solution 2:[2]

I guess you are closing and starting your application many times or repeating this method. After 10 times the telegram API makes you wait for about 24 hours to prevent flood.

It's a Telegram limit, my advice: Wait 2-3 minutes between calling SendCodeRequestAsync()

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Morteza Zabihi
Solution 2 Alex Coronas