aboutsummaryrefslogtreecommitdiffstats
path: root/bot
diff options
context:
space:
mode:
authorGravatar Joe Banks <[email protected]>2020-08-23 14:45:55 +0100
committerGravatar GitHub <[email protected]>2020-08-23 14:45:55 +0100
commit2a37183c682280e1e9ce93ea3552d858b7ac95ed (patch)
tree1f3945c5ac9393c9ebcd719b6640f3381f19c13a /bot
parentRemove whitespace from fun.py (diff)
parentMerge branch 'master' into python-topics (diff)
Merge pull request #427 from python-discord/python-topics
Python topics
Diffstat (limited to 'bot')
-rw-r--r--bot/exts/easter/conversationstarters.py28
-rw-r--r--bot/exts/evergreen/conversationstarters.py71
-rw-r--r--bot/resources/evergreen/py_topics.yaml84
-rw-r--r--bot/resources/evergreen/starter.json (renamed from bot/resources/easter/starter.json)0
4 files changed, 155 insertions, 28 deletions
diff --git a/bot/exts/easter/conversationstarters.py b/bot/exts/easter/conversationstarters.py
deleted file mode 100644
index a5f40445..00000000
--- a/bot/exts/easter/conversationstarters.py
+++ /dev/null
@@ -1,28 +0,0 @@
-import json
-import logging
-import random
-from pathlib import Path
-
-from discord.ext import commands
-
-log = logging.getLogger(__name__)
-
-with open(Path("bot/resources/easter/starter.json"), "r", encoding="utf8") as f:
- starters = json.load(f)
-
-
-class ConvoStarters(commands.Cog):
- """Easter conversation topics."""
-
- def __init__(self, bot: commands.Bot):
- self.bot = bot
-
- @commands.command()
- async def topic(self, ctx: commands.Context) -> None:
- """Responds with a random topic to start a conversation."""
- await ctx.send(random.choice(starters['starters']))
-
-
-def setup(bot: commands.Bot) -> None:
- """Conversation starters Cog load."""
- bot.add_cog(ConvoStarters(bot))
diff --git a/bot/exts/evergreen/conversationstarters.py b/bot/exts/evergreen/conversationstarters.py
new file mode 100644
index 00000000..cfa8dbce
--- /dev/null
+++ b/bot/exts/evergreen/conversationstarters.py
@@ -0,0 +1,71 @@
+import json
+import random
+from pathlib import Path
+
+import yaml
+from discord import Color, Embed
+from discord.ext import commands
+
+from bot.constants import WHITELISTED_CHANNELS
+from bot.utils.decorators import override_in_channel
+
+
+with Path("bot/resources/evergreen/starter.json").open("r", encoding="utf8") as f:
+ STARTERS = json.load(f)["starters"]
+
+
+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.
+ PY_TOPICS = yaml.load(f, Loader=yaml.FullLoader)
+
+ # Removing `None` from lists of topics, if not a list, it is changed to an empty one.
+ PY_TOPICS = {k: [i for i in v if i] if isinstance(v, list) else [] for k, v in PY_TOPICS.items()}
+
+ # 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)
+
+
+class ConvoStarters(commands.Cog):
+ """Evergreen conversation topics."""
+
+ def __init__(self, bot: commands.Bot):
+ self.bot = bot
+
+ @commands.command()
+ @override_in_channel(ALL_ALLOWED_CHANNELS)
+ async def topic(self, ctx: commands.Context) -> None:
+ """
+ Responds with a random topic to start a conversation.
+
+ If in a Python channel, a python-related topic will be given.
+
+ Otherwise, a random conversation topic will be recieved by the user.
+ """
+ try:
+ # Fetching topics.
+ channel_topics = PY_TOPICS[ctx.channel.id]
+
+ # If the channel isn't Python-related.
+ except KeyError:
+ await ctx.send(random.choice(STARTERS))
+
+ # If the channel ID doesn't have any topics.
+ else:
+ if channel_topics:
+ await ctx.send(random.choice(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)
+
+
+def setup(bot: commands.Bot) -> None:
+ """Conversation starters Cog load."""
+ bot.add_cog(ConvoStarters(bot))
diff --git a/bot/resources/evergreen/py_topics.yaml b/bot/resources/evergreen/py_topics.yaml
new file mode 100644
index 00000000..ae5289a7
--- /dev/null
+++ b/bot/resources/evergreen/py_topics.yaml
@@ -0,0 +1,84 @@
+# Conversation starters for python-related channels.
+
+# python-general
+267624335836053506:
+ - What's your favorite PEP?
+ - What's your current text editor/IDE, and what functionality do you like about it the most when programming in Python?
+ - What functionality is your text editor/IDE missing for programming Python?
+ - What parts of your life has Python automated, if any?
+ - Which python project are you the most proud of making?
+ - What made you want to learn Python?
+ - When did you start learning Python?
+ - What reasons are you learning Python for?
+ - Where's the strangest place you've seen Python?
+ - How has learning Python changed your life?
+
+# async
+630504881542791169:
+ - Are there any frameworks you wish were async?
+ - How have coroutines changed the way you write Python?
+
+# computer-science
+650401909852864553:
+ -
+
+# databases
+342318764227821568:
+ - Where do you get your best data?
+
+# data-science
+366673247892275221:
+ -
+
+# discord.py
+343944376055103488:
+ - What unique features does your bot contain, if any?
+ - What commands/features are you proud of making?
+ - What feature would you be the most interested in making?
+ - What feature would you like to see added to the library? what feature in the library do you think is redundant?
+ - Do you think there's a way in which Discord could handle bots better?
+
+# esoteric-python
+470884583684964352:
+ - What's a common part of programming we can make harder?
+
+# game-development
+660625198390837248:
+ -
+
+# microcontrollers
+545603026732318730:
+ -
+
+# networking
+716325106619777044:
+ -
+
+# python-extensions
+728390945384431688:
+ -
+
+# security
+366674035876167691:
+ -
+
+# software-testing
+463035728335732738:
+ -
+
+# tools-and-devops
+463035462760792066:
+ - What editor would you recommend to a beginner? Why?
+ - What editor would you recommend to be the most efficient? Why?
+
+# unix
+491523972836360192:
+ -
+
+# user-interfaces
+338993628049571840:
+ -
+
+# web-development
+366673702533988363:
+ -
diff --git a/bot/resources/easter/starter.json b/bot/resources/evergreen/starter.json
index 31e2cbc9..31e2cbc9 100644
--- a/bot/resources/easter/starter.json
+++ b/bot/resources/evergreen/starter.json