aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Xithrius <[email protected]>2020-09-09 15:01:07 -0700
committerGravatar Xithrius <[email protected]>2020-09-09 15:01:07 -0700
commit3544e71de5c9bf2de801be22977b7dd9a40ae6f0 (patch)
tree67705f5e6305f309ee27fd31ad48dae5902318f9
parentAdded more topics. (diff)
Topics are now iterated through instead of randomly selected.
-rw-r--r--bot/exts/evergreen/conversationstarters.py42
1 files changed, 26 insertions, 16 deletions
diff --git a/bot/exts/evergreen/conversationstarters.py b/bot/exts/evergreen/conversationstarters.py
index cfa8dbce..423662bb 100644
--- a/bot/exts/evergreen/conversationstarters.py
+++ b/bot/exts/evergreen/conversationstarters.py
@@ -1,4 +1,5 @@
-import json
+import itertools
+import logging
import random
from pathlib import Path
@@ -9,10 +10,12 @@ from discord.ext import commands
from bot.constants import WHITELISTED_CHANNELS
from bot.utils.decorators import override_in_channel
+log = logging.getLogger(__name__)
-with Path("bot/resources/evergreen/starter.json").open("r", encoding="utf8") as f:
- STARTERS = json.load(f)["starters"]
+SUGGESTION_FORM = 'https://forms.gle/zw6kkJqv8U43Nfjg9'
+with Path("bot/resources/evergreen/starter.yaml").open("r", encoding="utf8") as f:
+ STARTERS = yaml.load(f, Loader=yaml.FullLoader)
with Path("bot/resources/evergreen/py_topics.yaml").open("r", encoding="utf8") as f:
# First ID is #python-general and the rest are top to bottom categories of Topical Chat/Help.
@@ -24,6 +27,16 @@ with Path("bot/resources/evergreen/py_topics.yaml").open("r", encoding="utf8") a
# All the allowed channels that the ".topic" command is allowed to be executed in.
ALL_ALLOWED_CHANNELS = [channel_id for channel_id in PY_TOPICS.keys()] + list(WHITELISTED_CHANNELS)
+# Putting all topics into one dictionary and shuffling lists to reduce same-topic repetitions.
+TOPICS = {}
+for k, v in {**{'default': STARTERS}, **PY_TOPICS}.items():
+ if len(v):
+ random.shuffle(v)
+ TOPICS[k] = itertools.cycle(v)
+
+ else:
+ TOPICS[k] = False
+
class ConvoStarters(commands.Cog):
"""Evergreen conversation topics."""
@@ -39,31 +52,28 @@ class ConvoStarters(commands.Cog):
If in a Python channel, a python-related topic will be given.
- Otherwise, a random conversation topic will be recieved by the user.
+ Otherwise, a random conversation topic will be received by the user.
"""
+ # No matter what, the form will be shown.
+ embed = Embed(description=f'Suggest more topics [here]({SUGGESTION_FORM})!', color=Color.blurple())
+
try:
# Fetching topics.
- channel_topics = PY_TOPICS[ctx.channel.id]
+ channel_topics = TOPICS[ctx.channel.id]
# If the channel isn't Python-related.
except KeyError:
- await ctx.send(random.choice(STARTERS))
+ embed.title = f'**{next(TOPICS["default"])}**'
# If the channel ID doesn't have any topics.
else:
if channel_topics:
- await ctx.send(random.choice(channel_topics))
+ embed.title = f'**{next(channel_topics)}**'
else:
- embed = Embed(
- description=(
- "No topics found for this Python channel. You can suggest new ideas for topics "
- "[here](https://github.com/python-discord/seasonalbot/issues/426)!"
- ),
- color=Color.blurple()
- )
-
- await ctx.send(embed=embed)
+ embed.title = 'No topics found for this channel.'
+
+ await ctx.send(embed=embed)
def setup(bot: commands.Bot) -> None: