Skip to content

Commit b8d8df6

Browse files
authored
Merge pull request #296 from UWCS/feature/botmoderation
feature/botmoderation
2 parents 2a10c78 + 2316798 commit b8d8df6

4 files changed

Lines changed: 41 additions & 0 deletions

File tree

apollo.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
"cogs.commands.xkcd",
5252
"cogs.commands.market",
5353
"cogs.commands.auction",
54+
"cogs.bot_moderation",
5455
"cogs.channel_checker",
5556
"cogs.database",
5657
"cogs.irc",

cogs/bot_moderation.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
from datetime import datetime, timedelta
2+
3+
import discord
4+
from discord import Color, Embed
5+
from discord.ext.commands import Bot, Cog
6+
7+
from config import CONFIG
8+
9+
10+
class Database(Cog):
11+
def __init__(self, bot: Bot):
12+
self.bot = bot
13+
14+
@Cog.listener()
15+
async def on_message(self, message: discord.Message):
16+
joined_recently = message.author.joined_at > datetime.now() - timedelta(days=7)
17+
contains_everyone = '@everyone' in message.content
18+
is_giving_away = 'giving away' in message.content.lower()
19+
20+
if not joined_recently or not (contains_everyone or is_giving_away):
21+
return
22+
23+
channel = self.bot.get_channel(CONFIG.UWCS_BOT_LOG_CHANNEL_ID)
24+
25+
embed_colour = Color.from_rgb(61, 83, 255)
26+
embed_title = f'@{message.author.global_name}, ID: {message.author.id}'
27+
embed_description = f'User suspected to be a bot, joined_recently: {joined_recently}, contains_everyone: {contains_everyone}, is_giving_away: {is_giving_away}'
28+
embed = Embed(
29+
title=embed_title, color=embed_colour, embed_description=embed_description
30+
)
31+
32+
await message.delete()
33+
await channel.send(f'<@&{CONFIG.UWCS_EXEC_ROLE_IDS[1]}>', embed=embed)
34+
await message.author.timeout(timedelta(days=1))
35+
36+
async def setup(bot: Bot):
37+
await bot.add_cog(Database(bot))

config.example.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ config:
2020
UWCS_roles_channel_id: 123
2121
# Channel for the channel movement checker
2222
UWCS_exec_spam_channel_id: 1234
23+
# Channel for message logs
24+
UWCS_bot_log_channel_id: 1234
2325
# IRC bridge bot ID
2426
UWCS_discord_bridge_bot_id: 1337
2527
# API Key for chatgpt integration

config/config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ def __init__(self, filepath: str):
2020
self.UWCS_WELCOME_CHANNEL_ID: int = parsed.get("UWCS_welcome_channel_id")
2121
self.UWCS_ROLES_CHANNEL_ID: int = parsed.get("UWCS_roles_channel_id")
2222
self.UWCS_EXEC_SPAM_CHANNEL_ID: int = parsed.get("UWCS_exec_spam_channel_id")
23+
self.UWCS_BOT_LOG_CHANNEL_ID: int = parsed.get("UWCS_message_log_channel_id")
2324
self.UWCS_DISCORD_BRIDGE_BOT_ID: int = parsed.get("UWCS_discord_bridge_bot_id")
2425
self.OPENAI_API_KEY: str = parsed.get("openai_api_key")
2526
self.AI_INCLUDE_NAMES: bool = parsed.get("ai_include_names")

0 commit comments

Comments
 (0)