aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar scragly <[email protected]>2020-03-09 16:37:20 +1000
committerGravatar scragly <[email protected]>2020-03-09 16:37:20 +1000
commit4ffdb13172251e77c727cd64ce7b18da0844e966 (patch)
treece22bdd176dba332f751c7daf80a1d8d80f543e6
parentMerge pull request #823 from python-discord/tag-search-searches-tags-via-cont... (diff)
Implement vote command.
The vote command takes a given list of options and generates a simple message and corresponding reactions for each so members can quickly take a vote on a subject during in-server discussions and meetings.
-rw-r--r--bot/cogs/utils.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/bot/cogs/utils.py b/bot/cogs/utils.py
index 8ea972145..c5eaa547b 100644
--- a/bot/cogs/utils.py
+++ b/bot/cogs/utils.py
@@ -257,6 +257,24 @@ class Utils(Cog):
embed.description = best_match
await ctx.send(embed=embed)
+ @command(aliases=("poll",))
+ @with_role(*MODERATION_ROLES)
+ async def vote(self, ctx: Context, title: str, *options: str) -> None:
+ """
+ Build a quick voting poll with matching reactions with the provided options.
+
+ A maximum of 20 options can be provided, as Discord supports a max of 20
+ reactions on a single message.
+ """
+ if len(options) > 20:
+ raise BadArgument("I can only handle 20 options!")
+
+ options = {chr(i): f"{chr(i)} - {v}" for i, v in enumerate(options, start=127462)}
+ embed = Embed(title=title, description="\n".join(options.values()))
+ message = await ctx.send(embed=embed)
+ for reaction in options:
+ await message.add_reaction(reaction)
+
def setup(bot: Bot) -> None:
"""Load the Utils cog."""