chore: debug @everyone detection

This commit is contained in:
2026-02-03 15:13:13 +01:00
parent 1d84d26008
commit bfbe09c57f

View File

@@ -44,6 +44,52 @@ MAX_FOOTER = 2048
MENTION_COOLDOWNS = {} MENTION_COOLDOWNS = {}
async def handle_at_everyone(message):
if "@everyone" in message.content or "@here" in message.content:
logger.info(
f"Detected mention from {message.author.name} ({message.author.id})"
)
logger.info(f"Content: {message.content}")
# Check permissions
perms = message.channel.permissions_for(message.author)
logger.debug(f"User has mention_everyone permission: {perms.mention_everyone}")
# List user's roles and permissions
logger.debug(f"User roles: {[role.name for role in message.author.roles]}")
if not perms.mention_everyone:
logger.info("User doesn't have permission to mention everyone")
spam_role = message.guild.get_role(SPAM_ROLE_ID)
logger.info(f"Spam role found: {spam_role}")
if spam_role:
try:
# Check if we can actually assign the role
await message.author.add_roles(spam_role, reason="Spam mention")
logger.info("Role added successfully")
await message.reply(
f"Dink Donk! Time to ping everyone! {spam_role.mention}",
mention_author=True,
)
await timeout_member(
message.author, timedelta(minutes=5), "Spamming mentions"
)
logger.info("User timed out")
return True
except discord.Forbidden:
logger.error("Bot lacks permissions to add role/timeout user")
except discord.HTTPException as e:
logger.error(f"HTTP Error: {e}")
else:
logger.info("User has permission to mention everyone, ignoring")
return False
def fetch_image_from_message(message): def fetch_image_from_message(message):
image_object = None image_object = None
for attachment in message.attachments: for attachment in message.attachments:
@@ -398,26 +444,6 @@ async def handle_message(message, bot):
await message.delete() await message.delete()
return return
if "@everyone" in message.content or "@here" in message.content:
if not message.channel.permissions_for(message.author).mention_everyone:
spam_role = message.guild.get_role(SPAM_ROLE_ID)
member = message.guild.get_member(message.author.id)
# Check if the member already has the spam role
if spam_role not in member.roles:
await member.add_roles(spam_role)
# Add the user to the database
add_user_to_role(member.id, SPAM_ROLE_ID, member.name)
await message.reply(
f"Dink Donk! Time to ping everyone! {spam_role.mention}",
mention_author=True,
)
await timeout_member(member, timedelta(minutes=5), "Spamming mentions")
return
# Auto delete torrent if post in chat. # Auto delete torrent if post in chat.
for file in message.attachments: for file in message.attachments:
if file.filename.endswith((".torrent", ".TORRENT")): if file.filename.endswith((".torrent", ".TORRENT")):
@@ -426,6 +452,9 @@ async def handle_message(message, bot):
await message.delete() await message.delete()
return return
if await handle_at_everyone(message):
return
if await handle_crazy(message): if await handle_crazy(message):
return return