From 09e852ba8f9f1a3066f482124c061a3d38affe98 Mon Sep 17 00:00:00 2001
From: dnns01 <mail@dnns01.de>
Date: Mon, 7 Dec 2020 23:04:16 +0100
Subject: [PATCH] fix $11x - Allow mods to edit polls

---
 poll_cog.py | 28 ++++++++++++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)

diff --git a/poll_cog.py b/poll_cog.py
index 7895c22..3a61172 100644
--- a/poll_cog.py
+++ b/poll_cog.py
@@ -3,6 +3,8 @@ import os
 import discord
 from discord.ext import commands
 
+import utils
+
 OPTIONS = ["🇦", "🇧", "🇨", "🇩", "🇪", "🇫", "🇬", "🇭", "🇮", "🇯", "🇰", "🇱", "🇲", "🇳", "🇴", "🇵", "🇶", "🇷"]
 
 
@@ -21,6 +23,19 @@ class PollCog(commands.Cog):
 
         await channel.send(msg)
 
+    @commands.command(name="edit-poll")
+    @commands.check(utils.is_mod)
+    async def cmd_edit_poll(self, ctx, message_id, question, *answers):
+        message = await ctx.fetch_message(message_id)
+        if message:
+            if message.embeds[0].title == "Umfrage":
+                old_poll = Poll(self.bot, message=message)
+                new_poll = Poll(self.bot, question=question, answers=answers, author=old_poll.author)
+                await new_poll.send_poll(ctx.channel, message=message)
+        else:
+            ctx.send("Fehler! Umfrage nicht gefunden!")
+        pass
+
     @commands.command(name="poll")
     async def cmd_poll(self, ctx, question, *answers):
         """ Create poll """
@@ -61,7 +76,7 @@ class Poll:
             for i in range(2, len(embed.fields)):
                 self.answers.append(embed.fields[i].value)
 
-    async def send_poll(self, channel, result=False):
+    async def send_poll(self, channel, result=False, message=None):
         option_ctr = 0
         title = "Umfrage"
 
@@ -103,12 +118,21 @@ class Poll:
             embed.add_field(name=name, value=value, inline=False)
             option_ctr += 1
 
-        message = await channel.send("", embed=embed)
+        if message:
+            await message.edit(embed=embed)
+        else:
+            message = await channel.send("", embed=embed)
+
+        await message.clear_reaction("🗑️")
+        await message.clear_reaction("🛑")
 
         if not result:
             for i in range(0, len(self.answers)):
                 await message.add_reaction(OPTIONS[i])
 
+            for i in range(len(self.answers), len(OPTIONS)):
+                await message.clear_reaction(OPTIONS[i])
+
             await message.add_reaction("🗑️")
             await message.add_reaction("🛑")
 
-- 
GitLab