diff options
Diffstat (limited to 'bot')
| -rw-r--r-- | bot/exts/easter/conversationstarters.py | 28 | ||||
| -rw-r--r-- | bot/exts/evergreen/conversationstarters.py | 71 | ||||
| -rw-r--r-- | bot/resources/evergreen/py_topics.yaml | 84 | ||||
| -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 | 
