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) ); } } } }
public virtual void ReloadConfiguration(JObject newConfig) { Config = new BanKitConfig(newConfig); PostConfigReload(); }