Exemple #1
0
        public BanKitPlugin(IConnectionManager connMgr, JObject config)
        {
            ConnectionManager = connMgr;
            Config            = new BanKitConfig(config);

            ConnectionManager.CommandManager.RegisterChannelMessageCommandHandler(
                new Command(
                    CommandUtil.MakeNames("tb", "timeban", "timedban", "tkb"),
                    CommandUtil.NoOptions,
                    CommandUtil.MakeArguments(
                        CommandUtil.NonzeroStringMatcherRequiredWordTaker, // nickname
                        CommandUtil.NonzeroStringMatcherRequiredWordTaker, // timespan
                        RestTaker.Instance                                 // message
                        ),
                    forbiddenFlags: MessageFlags.UserBanned
                    ),
                HandleTimedBanCommand
                );

            if (Config.PersistBans)
            {
                // load persisted bans
                List <BanEntry> entriesToSchedule;
                using (BanKitContext ctx = GetNewContext())
                {
                    entriesToSchedule = ctx.BanEntries
                                        .Where(be => !be.Lifted)
                                        .ToList();
                }

                foreach (BanEntry ban in entriesToSchedule)
                {
                    if (ban.TimestampBanEnd <= DateTimeOffset.Now)
                    {
                        // unban immediately
                        UnbanChannelMask(ban.Channel, ban.BannedMask);
                    }
                    else
                    {
                        // schedule for later
                        ConnectionManager.Timers.Register(
                            ban.TimestampBanEnd,
                            () => UnbanChannelMask(ban.Channel, ban.BannedMask)
                            );
                    }
                }
            }
        }
Exemple #2
0
 public virtual void ReloadConfiguration(JObject newConfig)
 {
     Config = new BanKitConfig(newConfig);
     PostConfigReload();
 }