From fa09266d3a4e04c1f38f1cd8f45c75a9c000864c Mon Sep 17 00:00:00 2001 From: Conatum Date: Sat, 19 Mar 2022 17:08:31 +0200 Subject: [PATCH] feature (topgg): Add guild whitelist. --- bot/modules/topgg/data.py | 3 ++- bot/modules/topgg/module.py | 2 ++ bot/modules/topgg/settings.py | 26 ++++++++++++++++++++++++-- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/bot/modules/topgg/data.py b/bot/modules/topgg/data.py index b12a4120..3bad8ae9 100644 --- a/bot/modules/topgg/data.py +++ b/bot/modules/topgg/data.py @@ -1,4 +1,4 @@ -from data.interfaces import RowTable +from data.interfaces import RowTable, Table topggvotes = RowTable( 'topgg', @@ -6,3 +6,4 @@ topggvotes = RowTable( 'voteid' ) +guild_whitelist = Table('topgg_guild_whitelist') diff --git a/bot/modules/topgg/module.py b/bot/modules/topgg/module.py index c03f4e2a..a3872192 100644 --- a/bot/modules/topgg/module.py +++ b/bot/modules/topgg/module.py @@ -45,6 +45,8 @@ async def topgg_reply_wrapper(func, ctx: LionContext, *args, suggest_vote=True, pass elif ctx.cmd.name in boostfree_commands or ctx.cmd.group in boostfree_groups: pass + elif ctx.guild and ctx.guild.id in ctx.client.settings.topgg_guild_whitelist.value: + pass elif not get_last_voted_timestamp(ctx.author.id): upvote_info_formatted = upvote_info.format(lion_yayemote, ctx.best_prefix, lion_loveemote) diff --git a/bot/modules/topgg/settings.py b/bot/modules/topgg/settings.py index 33daad75..c59acd90 100644 --- a/bot/modules/topgg/settings.py +++ b/bot/modules/topgg/settings.py @@ -1,10 +1,14 @@ -from settings.user_settings import UserSettings, UserSetting -from settings.setting_types import Boolean +from cmdClient.checks import is_owner + +from settings import UserSettings, UserSetting, AppSettings +from settings.base import ListData, Setting +from settings.setting_types import Boolean, GuildIDList from modules.reminders.reminder import Reminder from modules.reminders.data import reminders from .utils import create_remainder, remainder_content, topgg_upvote_link +from .data import guild_whitelist @UserSettings.attach_setting @@ -48,3 +52,21 @@ class topgg_vote_remainder(Boolean, UserSetting): return ( "I will no longer send you voting reminders." ) + + +@AppSettings.attach_setting +class topgg_guild_whitelist(GuildIDList, ListData, Setting): + attr_name = 'topgg_guild_whitelist' + write_ward = is_owner + + category = 'Topgg Voting' + display_name = 'topgg_hidden_in' + desc = "Guilds where the topgg vote prompt is not displayed." + long_desc = ( + "A list of guilds where the topgg vote prompt will be hidden." + ) + + _table_interface = guild_whitelist + _id_column = 'appid' + _data_column = 'guildid' + _force_unique = True