Browse Source

Adding AutoKickCog to kick all new joins during a raid

master
Rocketsoup 2 years ago
parent
commit
81c30981e1
2 changed files with 45 additions and 0 deletions
  1. 2
    0
      bot.py
  2. 43
    0
      rocketbot/cogs/autokickcog.py

+ 2
- 0
bot.py View File

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

+ 43
- 0
rocketbot/cogs/autokickcog.py View File

@@ -0,0 +1,43 @@
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}')

Loading…
Cancel
Save