+ Upload
This commit is contained in:
54
cogs/polls.py
Normal file
54
cogs/polls.py
Normal file
@@ -0,0 +1,54 @@
|
||||
import discord
|
||||
from discord.ext import commands
|
||||
from discord import app_commands
|
||||
|
||||
class Polls(commands.Cog):
|
||||
def __init__(self, bot: commands.Bot):
|
||||
self.bot = bot
|
||||
# Emojis für bis zu 20 Optionen
|
||||
self.poll_emojis = [
|
||||
"🇦", "🇧", "🇨", "🇩", "🇪", "🇫", "🇬", "🇭", "🇮", "🇯",
|
||||
"🇰", "🇱", "🇲", "🇳", "🇴", "🇵", "🇶", "🇷", "🇸", "🇹"
|
||||
]
|
||||
|
||||
@app_commands.command(name="poll", description="Erstellt eine einfache Umfrage.")
|
||||
@app_commands.describe(
|
||||
question="Die Frage der Umfrage.",
|
||||
options="Die Antwortmöglichkeiten, getrennt durch ein Semikolon (;)."
|
||||
)
|
||||
async def poll(self, interaction: discord.Interaction, question: str, options: str):
|
||||
"""Erstellt eine Umfrage mit Reaktionen."""
|
||||
|
||||
# Trenne die Optionen am Semikolon
|
||||
split_options = [opt.strip() for opt in options.split(';')]
|
||||
|
||||
# Überprüfe die Anzahl der Optionen
|
||||
if len(split_options) < 2:
|
||||
await interaction.response.send_message("Du musst mindestens 2 Optionen angeben.", ephemeral=True)
|
||||
return
|
||||
if len(split_options) > 20:
|
||||
await interaction.response.send_message("Du kannst maximal 20 Optionen angeben.", ephemeral=True)
|
||||
return
|
||||
|
||||
# Erstelle die Beschreibung für das Embed
|
||||
description = []
|
||||
for i, option in enumerate(split_options):
|
||||
description.append(f"{self.poll_emojis[i]} {option}")
|
||||
|
||||
embed = discord.Embed(
|
||||
title=f"📊 Umfrage: {question}",
|
||||
description="\n".join(description),
|
||||
color=discord.Color.dark_purple()
|
||||
)
|
||||
embed.set_footer(text=f"Umfrage gestartet von {interaction.user.display_name}")
|
||||
|
||||
# Sende die Nachricht und speichere sie, um Reaktionen hinzuzufügen
|
||||
await interaction.response.send_message(embed=embed)
|
||||
poll_message = await interaction.original_response()
|
||||
|
||||
# Füge die Reaktionen hinzu
|
||||
for i in range(len(split_options)):
|
||||
await poll_message.add_reaction(self.poll_emojis[i])
|
||||
|
||||
async def setup(bot: commands.Bot):
|
||||
await bot.add_cog(Polls(bot))
|
Reference in New Issue
Block a user