Przeglądaj źródła

Adding AutoKickCog to kick all new joins during a raid

master
Rocketsoup 2 lat temu
rodzic
commit
81c30981e1
2 zmienionych plików z 45 dodań i 0 usunięć
  1. 2
    0
      bot.py
  2. 43
    0
      rocketbot/cogs/autokickcog.py

+ 2
- 0
bot.py Wyświetl plik

10
 from discord.ext import commands
10
 from discord.ext import commands
11
 
11
 
12
 from config import CONFIG
12
 from config import CONFIG
13
+from rocketbot.cogs.autokickcog import AutoKickCog
13
 from rocketbot.cogs.configcog import ConfigCog
14
 from rocketbot.cogs.configcog import ConfigCog
14
 from rocketbot.cogs.crosspostcog import CrossPostCog
15
 from rocketbot.cogs.crosspostcog import CrossPostCog
15
 from rocketbot.cogs.generalcog import GeneralCog
16
 from rocketbot.cogs.generalcog import GeneralCog
63
 bot.add_cog(ConfigCog(bot))
64
 bot.add_cog(ConfigCog(bot))
64
 
65
 
65
 # Optional
66
 # Optional
67
+bot.add_cog(AutoKickCog(bot))
66
 bot.add_cog(CrossPostCog(bot))
68
 bot.add_cog(CrossPostCog(bot))
67
 bot.add_cog(JoinAgeCog(bot))
69
 bot.add_cog(JoinAgeCog(bot))
68
 bot.add_cog(JoinRaidCog(bot))
70
 bot.add_cog(JoinRaidCog(bot))

+ 43
- 0
rocketbot/cogs/autokickcog.py Wyświetl plik

1
+import weakref
2
+
3
+from discord import Guild, Member
4
+from discord.ext import commands
5
+
6
+from config import CONFIG
7
+from rocketbot.cogs.basecog import BaseCog, BotMessage, BotMessageReaction, CogSetting
8
+
9
+class AutoKickCog(BaseCog, name='Auto Kick'):
10
+	"""
11
+	Cog for automatically kicking ALL new joins. For temporary use during join raids.
12
+	"""
13
+	SETTING_ENABLED = CogSetting('enabled', bool,
14
+		brief='autokick',
15
+		description='Whether this cog is enabled for a guild.')
16
+
17
+	def __init__(self, bot):
18
+		super().__init__(bot)
19
+		self.add_setting(AutoKickCog.SETTING_ENABLED)
20
+
21
+	@commands.group(
22
+		brief='Automatically kicks all new users as soon as they join',
23
+	)
24
+	@commands.has_permissions(ban_members=True)
25
+	@commands.guild_only()
26
+	async def autokick(self, context: commands.Context):
27
+		'Auto-kick'
28
+		if context.invoked_subcommand is None:
29
+			await context.send_help()
30
+
31
+	@commands.Cog.listener()
32
+	async def on_member_join(self, member: Member) -> None:
33
+		'Event handler'
34
+		guild: Guild = member.guild
35
+		if not self.get_guild_setting(guild, self.SETTING_ENABLED):
36
+			return
37
+		await member.kick(reason=f'Rocketbot: Autokick enabled.')
38
+		msg = BotMessage(guild,
39
+						text=f'Autokicked {member.mention} ({member.id}). To disable this feature: `{CONFIG["command_prefix"]}autokick disable`.',
40
+						type=BotMessage.TYPE_INFO,
41
+						context=None)
42
+		await self.post_message(msg)
43
+		self.log(guild, f'Autokicked {member.nick}')

Ładowanie…
Anuluj
Zapisz