one reply per person and first word check

This commit is contained in:
2025-03-22 11:40:05 +01:00
parent b2efff954d
commit e5efa444ce
+7 -9
View File
@@ -1,7 +1,5 @@
import asyncio
import discord import discord
from discord.ext import commands, tasks from discord.ext import commands, tasks
from discord import app_commands
from datetime import datetime, timezone from datetime import datetime, timezone
from base64 import b64decode from base64 import b64decode
import requests import requests
@@ -71,17 +69,17 @@ async def on_message(message):
if message.reference and message.reference.message_id in active_trivia: if message.reference and message.reference.message_id in active_trivia:
trivia_data = active_trivia[message.reference.message_id] trivia_data = active_trivia[message.reference.message_id]
if message.author.id in trivia_data["replies"]:
return
# Check answer # Check answer
if message.content.lower() == trivia_data["correct_answer"]: if message.content.lower().startswith(trivia_data["correct_answer"].lower()):
await message.add_reaction("✅") await message.add_reaction("✅")
else: else:
await message.add_reaction("❌") await message.add_reaction("❌")
# Increment the count
trivia_data["count"] += 1
# If we've reached max replies, remove this question from tracking # If we've reached max replies, remove this question from tracking
if trivia_data["count"] >= trivia_data["max_replies"]: if len(trivia_data["replies"]) >= trivia_data["max_replies"]:
del active_trivia[message.reference.message_id] del active_trivia[message.reference.message_id]
print(f"{datetime.now(timezone.utc).strftime('%H:%M:%S')} - Removed trivia question ID {message.reference.message_id} after {trivia_data['max_replies']} replies") print(f"{datetime.now(timezone.utc).strftime('%H:%M:%S')} - Removed trivia question ID {message.reference.message_id} after {trivia_data['max_replies']} replies")
@@ -99,7 +97,7 @@ async def send_trivia():
shuffle(answers) shuffle(answers)
role_mention = f"<@&{ROLE}>" role_mention = f"<@&{ROLE}>"
embedVar = discord.Embed(title=decoded_data['question'], description="", color=0x00ff00) embedVar = discord.Embed(title=decoded_data['question'], description="Reply to answer", color=0x00ff00)
embedVar.add_field(name="Difficulty", value=str(decoded_data['difficulty']).capitalize(), inline=False) embedVar.add_field(name="Difficulty", value=str(decoded_data['difficulty']).capitalize(), inline=False)
embedVar.add_field(name="Answers", value='**'+('\n'.join(['- '+str(a) for a in answers]))+'**', inline=False) embedVar.add_field(name="Answers", value='**'+('\n'.join(['- '+str(a) for a in answers]))+'**', inline=False)
msg = await CHANNEL.send(role_mention, embed=embedVar) msg = await CHANNEL.send(role_mention, embed=embedVar)
@@ -107,7 +105,7 @@ async def send_trivia():
# Store this question in our tracking dict # Store this question in our tracking dict
active_trivia[msg.id] = { active_trivia[msg.id] = {
"correct_answer": str(decoded_data['correct_answer']).lower(), "correct_answer": str(decoded_data['correct_answer']).lower(),
"count": 0, "replies": 0,
"max_replies": 40 "max_replies": 40
} }
print(f"{datetime.now(timezone.utc).strftime('%H:%M:%S')} - Added trivia question ID {msg.id}") print(f"{datetime.now(timezone.utc).strftime('%H:%M:%S')} - Added trivia question ID {msg.id}")