9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120 | class BotConfiguration(Extension):
def __init__(self, bot: Client):
self.bot = bot
config_cmd = SlashCommand(name='config', description='Configure the bot', default_member_permissions=Permissions.ADMINISTRATOR)
@config_cmd.subcommand('logging', sub_cmd_description='Configure what the bot logs')
async def config_logging(self, ctx: InteractionContext):
"""/config logging
Description:
Configure what the bot logs. On command execution it will send a select menu with options to choose from, automatically saves on selecting an option. Time limit 2 minutes.
"""
await ctx.defer(ephemeral=True)
events_logging = await db.prefixes.find_one({'guildid':ctx.guild_id})
if events_logging.activecommands is None:
events_log_list = ''
else:
events_log_list = events_logging.activecommands.lower()
if 'message_deleted' in events_log_list:
msg_del_status = True
else:
msg_del_status = False
if 'message_edited' in events_log_list:
msg_edit_status = True
else:
msg_edit_status = False
if 'member_join' in events_log_list:
mem_join_status = True
else:
mem_join_status = False
if 'member_leave' in events_log_list:
mem_leave_status = True
else:
mem_leave_status = False
if 'member_kick' in events_log_list:
mem_kick_status = True
else:
mem_kick_status = False
if 'member_ban' in events_log_list:
mem_ban_status = True
else:
mem_ban_status = False
if 'member_unban' in events_log_list:
mem_unban_status = True
else:
mem_unban_status = False
if 'member_timeout' in events_log_list:
mem_timeout_status = True
else:
mem_timeout_status = False
if 'member_roles' in events_log_list:
mem_roles_status = True
else:
mem_roles_status = False
if 'member_nick' in events_log_list:
mem_nick_status = True
else:
mem_nick_status = False
if 'welcome_msg' in events_log_list:
welcome_msg_status = True
else:
welcome_msg_status = False
if 'welcome_msg_card' in events_log_list:
welcome_msg_card_status = True
else:
welcome_msg_card_status = False
if 'leave_msg' in events_log_list:
leave_msg_status = True
else:
leave_msg_status = False
select_options = [
StringSelectOption(label="Deleted Messages", value="message_deleted", default=msg_del_status),
StringSelectOption(label="Edited Messages", value="message_edited", default=msg_edit_status),
StringSelectOption(label="Member Joined", value="member_join", default=mem_join_status),
StringSelectOption(label="Member Left", value="member_leave", default=mem_leave_status),
StringSelectOption(label="Member Kicked", value="member_kick", default=mem_kick_status),
StringSelectOption(label="Member Banned", value="member_ban", default=mem_ban_status),
StringSelectOption(label="Member Unbanned", value="member_unban", default=mem_unban_status),
StringSelectOption(label="Member Timeout", value="member_timeout", default=mem_timeout_status),
StringSelectOption(label="Member Roles", value="member_roles", default=mem_roles_status),
StringSelectOption(label="Member Nickname", value="member_nick", default=mem_nick_status),
StringSelectOption(label="Welcome Message", value="welcome_msg", default=welcome_msg_status),
StringSelectOption(label="Leave Message", value="leave_msg", default=leave_msg_status),
StringSelectOption(label="New Member Card", value="welcome_msg_card", default=welcome_msg_card_status),
]
select_menu = StringSelectMenu(select_options, min_values=0, max_values=13)
message = await ctx.send('Configure logging.', components=select_menu)
while True:
try:
select = await self.bot.wait_for_component(components=select_menu, timeout=120)
except asyncio.TimeoutError:
await message.edit('Config closed due to 2 minutes of inactivity.', components=[])
else:
values = ",".join(select.ctx.values)
events_logging.activecommands = values
await events_logging.save()
|