Beispiel #1
0
        internal static async Task <bool> CheckUserTimeout(SocketUser usr, ulong guildID, IMessageChannel channel)
        {
            var Tracker = UserTimeouts.SingleOrDefault(ut => ut.TrackedUser == usr && ut.GuildID == guildID);

            if (Tracker != null)
            {
                TimeoutTimer t         = UserTimeoutTimers.SingleOrDefault(p => p.Tracker == Tracker);
                int          sec       = FriendUsers.ContainsKey(usr.Id) ? (int)Constants._CMDTIMEOUT_ / 2 : (int)Constants._CMDTIMEOUT_;
                TimeSpan     ts        = DateTime.Now - t.StartTime;
                TimeSpan     remaining = TimeSpan.FromSeconds(sec - ts.TotalSeconds);
                var          msg       = await channel.SendMessageAsync($"Slow down {usr.Username}! Try again in {remaining.Seconds}.{remaining.Milliseconds / 100} seconds.");

                AddRandomTracker((RestUserMessage)msg, remaining.TotalSeconds > 1 ? (ulong)remaining.TotalSeconds : 1);
                return(false);
            }
            return(true);
        }
Beispiel #2
0
        } = new List <TimeoutTimer>();                                                                 //Keep track of timers so proper one can be found

        internal static void AddUserTimeout(SocketUser usr, ulong guildID)
        {
            var          track  = new TimeoutTracker(usr, guildID);
            TimeoutTimer tTimer = null;
            Timer        t      = new Timer();

            ulong timeout = FriendUsers.ContainsKey(usr.Id) ? (ulong)Constants._CMDTIMEOUT_ / 2 : (ulong)Constants._CMDTIMEOUT_;

            void handler(object sender, ElapsedEventArgs e)
            {
                t.Stop();
                if (UserTimeouts.Contains(track))
                {
                    UserTimeouts.Remove(track);
                    UserTimeoutTimers.Remove(tTimer);
                }
            }

            t.StartTimer(handler, timeout * 1000);
            tTimer = new TimeoutTimer(track);
            UserTimeouts.Add(track);
            UserTimeoutTimers.Add(tTimer);
        }