From 43e10e803485368c18ed8423adeb3b720a587205 Mon Sep 17 00:00:00 2001 From: viveksantayana Date: Mon, 24 Jan 2022 12:26:14 +0000 Subject: [PATCH] Re-build using different core libraries. --- .vscode/settings.json | 7 +- CHANGELOG.md | 29 - COMMANDS.md | 120 ---- TODO.md | 11 - app/.env.example | 9 - app/Dockerfile | 7 - app/assets/tcard.wav | Bin 709826 -> 0 bytes app/bot.py | 289 --------- app/cogs/botcommands/prefix.py | 33 - app/cogs/controlcommands/debug.py | 188 ------ app/cogs/controlcommands/migrate.py | 129 ---- app/cogs/events/on_command_error.py | 30 - app/cogs/events/on_connect.py | 30 - app/cogs/events/on_guild_channel_delete.py | 33 - app/cogs/events/on_guild_join.py | 26 - app/cogs/events/on_guild_remove.py | 22 - app/cogs/events/on_guild_role_create.py | 27 - app/cogs/events/on_guild_role_delete.py | 27 - app/cogs/events/on_guild_role_update.py | 34 -- app/cogs/events/on_guild_update.py | 25 - app/cogs/events/on_message.py | 46 -- app/cogs/events/on_ready.py | 44 -- app/cogs/events/secondary/pitch_listener.py | 201 ------- app/cogs/membership/member_verification.py | 126 ---- app/cogs/membership/restriction_listener.py | 54 -- app/cogs/slashcommands/config.py | 416 ------------- .../secondary/edit_membership.py | 95 --- .../slashcommands/secondary/game_create.py | 302 ---------- .../secondary/game_management.py | 562 ------------------ .../secondary/manipulate_timeslots.py | 170 ------ app/cogs/slashcommands/secondary/pitch.py | 186 ------ .../secondary/player_commands.py | 239 -------- app/cogs/slashcommands/secondary/tcard.py | 83 --- app/data/.gitkeep | 0 app/data/config_blueprint.yml | 30 - app/requirements.txt | 26 - docker-compose.yml | 9 - resources.md | 46 -- 38 files changed, 6 insertions(+), 3705 deletions(-) delete mode 100644 CHANGELOG.md delete mode 100644 COMMANDS.md delete mode 100644 TODO.md delete mode 100644 app/.env.example delete mode 100644 app/Dockerfile delete mode 100644 app/assets/tcard.wav delete mode 100644 app/bot.py delete mode 100644 app/cogs/botcommands/prefix.py delete mode 100644 app/cogs/controlcommands/debug.py delete mode 100644 app/cogs/controlcommands/migrate.py delete mode 100644 app/cogs/events/on_command_error.py delete mode 100644 app/cogs/events/on_connect.py delete mode 100644 app/cogs/events/on_guild_channel_delete.py delete mode 100644 app/cogs/events/on_guild_join.py delete mode 100644 app/cogs/events/on_guild_remove.py delete mode 100644 app/cogs/events/on_guild_role_create.py delete mode 100644 app/cogs/events/on_guild_role_delete.py delete mode 100644 app/cogs/events/on_guild_role_update.py delete mode 100644 app/cogs/events/on_guild_update.py delete mode 100644 app/cogs/events/on_message.py delete mode 100644 app/cogs/events/on_ready.py delete mode 100644 app/cogs/events/secondary/pitch_listener.py delete mode 100644 app/cogs/membership/member_verification.py delete mode 100644 app/cogs/membership/restriction_listener.py delete mode 100644 app/cogs/slashcommands/config.py delete mode 100644 app/cogs/slashcommands/secondary/edit_membership.py delete mode 100644 app/cogs/slashcommands/secondary/game_create.py delete mode 100644 app/cogs/slashcommands/secondary/game_management.py delete mode 100644 app/cogs/slashcommands/secondary/manipulate_timeslots.py delete mode 100644 app/cogs/slashcommands/secondary/pitch.py delete mode 100644 app/cogs/slashcommands/secondary/player_commands.py delete mode 100644 app/cogs/slashcommands/secondary/tcard.py delete mode 100644 app/data/.gitkeep delete mode 100644 app/data/config_blueprint.yml delete mode 100644 app/requirements.txt delete mode 100644 docker-compose.yml delete mode 100644 resources.md diff --git a/.vscode/settings.json b/.vscode/settings.json index f95bc4b..7d85e90 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,10 @@ { "editor.insertSpaces": false, "python.pythonPath": "./app/Scripts/python", - "python.autoComplete.extraPaths": ["./app"] + "python.autoComplete.extraPaths": [ + "./app" + ], + "python.analysis.extraPaths": [ + "./app" + ] } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index d4f7f78..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,29 +0,0 @@ -# Changelog - -## Minor Updates in Version 3.0.1 - -- Re-builds the Docker image to use a `python:slim` base instead of `python:buster`, reducing the footprint of the image to a quarter of its previous size. - -## Major Changes in Version 3 - -- Discards the database engine in favour of data storage in `.yml` files -`The database engine was overkill. It only slowed down the Bot's performance, made it more fragile, and caused unnecessary complexity while not really providing any necessary utility. -This also makes server migration much easier. -I went with .yml files over .json because I preferred the readability of the former, and to align it with the Docker-Compose files elsewhere in the directory. -I cannot believe how much I got into the debate between these two formats. -Seriously, the database was overkill and such a bad idea. -It was fun to learn but was such a bad idea.` -- Implements client-side `/commands` as the core method of interaction -`This takes advantage of a new Discord feature to programme /commands into the console via Bot integration rather than natively at the bot. -This offers more robust command handling, with client-side data validation, option entries, input menus, etc. -This does have the drawback of requiring a more complex API interaction in order for the bot to function, but it should improve the bot's functionality overall.` -- Uses Discord Buttons and Select Menus to replace Reaction Role features -`In keeping with adopting more robust Discord features to deprecate old ones, this new version of the Bot tries to make use of more powerful Discord features instead of contorting Reaction Roles and other previous features into the shape of something they were not built for. -While it is unclear what the direction of such developments in Discord will be going forward, and it is unclear how future API changes will affect this, one way or another this is using new Discord features in the way they are meant to be used rather than excessive hacking.` -- Provides a level of abstraction in many of its recognition of the various roles and channels referenced in its functioning. -`The bot no longer has specific channels (like help or committee notification channels) or roles (like administrators or different categories of membership) hard-coded into it for it to interact with them. -This makes the code a lot more complex to debug and maintain, especially when handling defaults or fail-safes for when the relevant roles or channels are deleted, but has some added flexibility and makes the bot a lot less dependent a precise server setup, thus making it a lot more brittle in the long run.` -- Refactors the old code for more clarity in the bot's code -`Adds some descriptions and explanatory text to the commands themselves so they can be accessed and displayed via the bot help command, making the bot a lot more usable. -Also presents the code in a more readable format, with clearer indentation and parameter naming for core functions. -The code has a lot more in-line comments explaining how it works so that it can be maintained by other people.` diff --git a/COMMANDS.md b/COMMANDS.md deleted file mode 100644 index 523a081..0000000 --- a/COMMANDS.md +++ /dev/null @@ -1,120 +0,0 @@ -# Bot Commands - -A full list of native bot commands can be retrieved using the `-help` command in the bot. -The commands have full descriptions of their function as well as syntax that can be accessed via the help command. -This will not apply to `/commands`, and so this reference file will provide a list of all the commands, the cogs that control them, as well as their syntax or usage notes. - -`N.B.: Do not delete any roles, channels, or categories that are created by the Bot unless you are certain you need to. -The Bot has no way of synchronising manual actions with its data files at present, and any conflict between the guild setup and the Bot's data will cause errors. -In a future version, I may try and make the bot more flexible to work with both its own commands and user actions.` - -The prefix for the Bot's native commands is dynamic. -It can be changed using the relevant command below. -The default prefix for the bot is `-`. - -In the syntax description below, mandatory arguments are given in ``, and optional arguments are given in `[square brackets]`. - -For most purposes, the bot will primarily rely on the new `/command` framework, and as such those commands will be listed first. The native bot commands will be provided below. - -## `/commands` - -`/commands` operate through a level of base commands, groups, and sub-commands. -Sub-commands inherit their permissions from their base commands. -All permissions are thus set at the level of the base command. -The commands are given in different cogs in order to keep the design modular, and to ensure that different modules can be activated or deactivated depending on what the configuration of the guild is like. - -### Configuration Commands - -These commands are to set up the bot for the guild. -The base command for the bot is `/config`. -Configuration commands are `admin only`. - -| Command | Description | -|---|---| -| `/config roles [role]` | Sets up the various key roles referenced by the bot, such as `bot` for dice bots, `committee`, `students`, as well as `newcomer`/`returning-player`. If a role already exists, the bot will assign that role. If it does not, the bot will create one. The bot will not be able to create games until a dice bot role has been defined. -| `/config channels [channel]` | Sets up the various key channels referenced by the bot, such as the `mod` channel for notifications to Committee, as well as the `help` channel for the bot to monitor, and the `signup` channel for membership confirmations. If a channel already exists, the bot will assign it. If it does not, the bot will create one. The bot will not be able to use these features until the channels are defined. | -| `/config membership add [role]` | Creates a new membership type for the Bot to administer in the Guild. If a role exists, it will assign that role to the membership type. If it does not, the bot will create it. | -| `/config membership list` | Shows the current types of membership set up. | -| `/config membership remove ` | Deletes a membership type set up in the Guild. The command is locked if there are no membership types configured. | -| `/config notifications ` | Whether or not the bot notifies the Committee on messages being posted here. This includes monitoring for the `help` channel and `membership signups` channel, etc. | -|`/config restrict ` | Enables or disables membership restriction in the Guild. | -| `/config timeslots add ` | Creates a new timeslot for the Guild to host games in. The bot will not be able to create games until at least one time slot is configured. | -| `/config timeslots list` | Shows the current timeslots with their keys and names that are configured for the Guild. This command will only display if there is at least one timeslot configured. If you delete the last time slot, this command will be locked. | -| `/config timeslots modify ` | Edits the name of a configured timeslot. You cannot change the key of a timeslot. This command will only display if there is at least one timeslot configured. If you delete the last time slot, this command will be locked. | -| `/config timeslots remove` | Opens a prompt to delete a configured timeslot. You cannot delete a time slot that has games configured for it. This command will only display if there is at least one timeslot configured. If you delete the last time slot, this command will be locked. | - -### Game Commands - -These commands are for setting up and managing games configured on the Guild. -The base command for the bot is `/game`. -The commands are `admin only`. -The base command is locked and only become available when at least one timeslot is set up, and a bot role has been assigned. -The sub-commands have additional restrictions. - -| Command | Description | -|---|---| -| `/game create ...` | This is the base command to create games. This command takes several parameters that are far too many for me to list here. The Prompt system will make it clear what arguments need to be entered and when. | -| `/game delete <@game role>` | Deletes the game associated with the role that is mentioned. This command is locked until there is at least one game configured. If the last game that is configured is deleted by the bot, the command is locked again. `This command must be issued in a text channel associated with the game being deleted (in addition to mentioning the game role).` | -| `/game modify <@game role> ...` | This command also takes several parameters, just like `/game create`, but all of them are optional as long as at least one is entered. It changes the various parameters of the game. | -| `/game purge` | Opens a prompt to delete all games in a given time slot. It also has the option of deleting all games for all time slots. `Use this command with extreme caution.` | - -### Player Commands - -These commands are for managing players and their membership of games. -The base command is `/player`. -Permissions for this command are open to all users (i.e. all users who have the `use slash command` permission enabled on the Guild settings). -These commands are locked until there is at least one game configured. - -| Command | Description | -|---|---| -| `/player add <@player> <@game>` | Adds a player to a game. It can only be used by the GM of the game being mentioned, or by an admin. | -| `/player leave` | Removes the user issuing the command from the game they are in. This command `must be issued in a text channel associated with the game you are trying to leave`. | -| `/player remove <@player>` | Removes the user mentioned from the game. This command `must be issued in a text channel associated with the game you are trying to leave`. | - -While this is not strictly a `/player` command, and it is housed in a separate cog, it has the same level of permissions and prerequisites as all the `/player` commands. - -| Command | Description | -|---|---| -|`/tcard`| Invokes a T-Card in the game. This command also posts a graphic of the T-Card, tags the game's role, and pings a message in the appropriate voice channel.| - -### Pitch Command - -The `/pitch` command is used to run pitches for games on the server. -It is locked until at least one game is set up. -The command is `admin only`. -It turns the current text channel where it is issued into a pitch listing channel, setting its permissions appropriately. -It opens a prompt to select which timeslot to pitch for. - -The command further generates a menu of the games running, and also gives the admins a control panel with which to control access to the game staggered by the various roles (newcomers, returning players) if they are defined. - -The pitch menu runs until it is closed using the relevant button. - -## Native Bot `-commands` - -These commands are issued using the bot's text prefix. -The prefix may vary depending on the bot's configuration. - -### Default Commands - -These commands are default to the `Discord.py` library and are automatically enabled in the bot - -| Command | Permissions | Syntax and Aliases | Description | -|---|---|---| --- | -| help | All Users | `-help [command]`| Default Discord helper command. Gives a list of all of the commands enabled in the Guild. And when used with an optional argument that gives a command name, it provides the help text, description, and syntax of the command.| - -### Debug Commands - -These commands are found in the file `./cogs/controlcommands/debug.py` and provide meta-controls for how the bot and its functionality work. -The permissions for these commands has been set up at the Cog level for those with the Bot Maintainer role only or for the owner of the Guild. If no bot maintainer role is defined, the command will fail. - -Information about debug commands will be displayed to users authorised to use them via the `-help` command. - -### Prefix Command - -This command is in the file `./cogs/botcommands/prefix.py`. -It allows for the dynamic control of the bot's command prefix for native commands. -The permission has been set up at the Cog level. - -| Command | Permissions | Syntax and Aliases | Description | -|---|---|---| --- | -| changeprefix | Admin Only | `-changeprefix [str]` or `-prefix [str]` | Sets the given string as a prefix. The argument is option, and if not provided an argument it sets the prefix to `-` as the default. | diff --git a/TODO.md b/TODO.md deleted file mode 100644 index 702ff9d..0000000 --- a/TODO.md +++ /dev/null @@ -1,11 +0,0 @@ -# To Do for Version 3.1 - -## Docker - -- [x] Re-build using `python:slim` as base image - -## Bot Functionality and Processes - -- [ ] Add support for Discord Threads following Discord Py library update - - [ ] Update permission settings for GMs on game channels to support threads -- [ ] ~~Change component response architecture to use dynamic callback functions instead of global listeners.~~ Not suitable because it does not provide persistence across reboots. diff --git a/app/.env.example b/app/.env.example deleted file mode 100644 index 117dca1..0000000 --- a/app/.env.example +++ /dev/null @@ -1,9 +0,0 @@ -BOT_TOKEN= -TEST_TOKEN= -CONFIG=./data/config.yml -DATA=./data/data.yml -LOOKUP=./data/lookup.yml -GM=./data/gm.yml -CATEGORIES=./data/categories.yml -PITCHES=./data/pitches.yml -BOT_VERSION=3.0.0 \ No newline at end of file diff --git a/app/Dockerfile b/app/Dockerfile deleted file mode 100644 index 9bf57d0..0000000 --- a/app/Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM python:3.9.6-slim -COPY . /usr/src/app -WORKDIR /usr/src/app -RUN apt-get update -y && apt-get upgrade -y && apt-get install libopus0 -y && \ - pip install --upgrade pip setuptools wheel && pip install -r requirements.txt && \ - apt-get autoremove -y -CMD python3 -u ./bot.py \ No newline at end of file diff --git a/app/assets/tcard.wav b/app/assets/tcard.wav deleted file mode 100644 index d607beb14483b47e6e5e48bd3d43ff1a94e84ce9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 709826 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 PWl_B{y=e{cS6oCX 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 0: - conf[guildStr]['configured'] = False - elif len(output) == 0: - conf[guildStr]['configured'] = True - yaml_dump(conf,configFile) - return conf[guildStr]['configured'], output - -def parseConfigCheck(missingKeys: list): - output = 'Configuration values for the following mandatory parameters have not been defined:\n\n' - for entry in missingKeys: - if '.' in entry: - e1, e2 = entry.split('.') - if e1 == 'channels': - if e2 == 'help': - output = ''.join([output, f"- The `help channel` for the Bot to monitor and notify Committee\n"]) - if e2 == 'mod': - output = ''.join([output, f"- The `moderation channel` for the bot's outputs\n"]) - if e2 == 'signup': - output = ''.join([output, f"- The `sign-up channel` for the membershp registration\n"]) - if e1 == 'roles': - if e2 == 'admin': - output = ''.join([output, f"- The `administrator` role(s) for the guild\n"]) - if e2 == 'committee': - output = ''.join([output, f"- The `Committee` role for the guild\n"]) - if e2 == 'bot': - output = ''.join([output, f"- The `Bot` role for the guild\n"]) - if e2 == 'newcomer': - output = ''.join([output, f"- The `Newcomer` role for the guild\n"]) - if e2 == 'returning': - output = ''.join([output, f"- The `Returning Player` role for the guild\n"]) - if e2 == 'student': - output = ''.join([output, f"- The `Student` role for the guild\n"]) - if entry == 'membership': - output = ''.join([output, f"- `Membership roles`: the Channel needs at least one membership role\n"]) - if entry == 'name': - output = ''.join([output, f"- The guild's `name`\n"]) - if entry == 'owner': - output = ''.join([output, f"- The guild's `owner`\n"]) - if entry == 'prefix': - output = ''.join([output, f"- The guild's `prefix` for native (non-`/`) commands.\n"]) - if entry == 'timeslots': - output = ''.join([output, f"- Available `timeslots` for server games.\n"]) - return output - -def loadCog(filepath:str): - path = os.path.normpath(filepath).split(os.path.sep) - if path[-1].endswith('.py'): - path[-1] = path[-1][:-3] - client.load_extension('.'.join(path)) - -def unloadCog(filepath:str): - path = os.path.normpath(filepath).split(os.path.sep) - if path[-1].endswith('.py'): - path[-1] = path[-1][:-3] - client.unload_extension('.'.join(path)) - -def reloadCog(filepath:str): - path = os.path.normpath(filepath).split(os.path.sep) - if path[-1].endswith('.py'): - path[-1] = path[-1][:-3] - client.reload_extension('.'.join(path)) - -def loadCogs(cogClass:str = '--all'): - for category in os.listdir(f'./{cogsDir}'): - if cogClass == '--all' or cogClass == category: - for cogfile in os.listdir(f'./{cogsDir}/{category}'): - if cogfile.endswith('.py'): - loadCog(f'./{cogsDir}/{category}/{cogfile}') - -def unloadCogs(cogClass:str = '--all'): - for category in os.listdir(f'./{cogsDir}'): - if cogClass == '--all' or cogClass == category: - for cogfile in os.listdir(f'./{cogsDir}/{category}'): - if cogfile.endswith('.py'): - unloadCog(f'./{cogsDir}/{category}/{cogfile}') - -def reloadCogs(cogClass:str = '--all'): - for category in os.listdir(f'./{cogsDir}'): - if cogClass == '--all' or cogClass == category: - for cogfile in os.listdir(f'./{cogsDir}/{category}'): - if cogfile.endswith('.py'): - reloadCog(f'./{cogsDir}/{category}/{cogfile}') - -loadCogs('controlcommands') -loadCogs('events') -loadCogs('membership') -loadCogs('botcommands') -loadCogs('slashcommands') -if yaml_load(configFile): - if any([yaml_load(configFile)[x]['timeslots'] for x in yaml_load(configFile)]): - loadCog(f'./{cogsDir}/slashcommands/secondary/manipulate_timeslots.py') - if any(['bot' in yaml_load(configFile)[x]['roles'] for x in yaml_load(configFile)]): - loadCog(f'./{cogsDir}/slashcommands/secondary/game_create.py') - if yaml_load(lookupFile): - if any([x for x in yaml_load(lookupFile).values()]): - loadCog(f'./{cogsDir}/slashcommands/secondary/game_management.py') - loadCog(f'./{cogsDir}/slashcommands/secondary/player_commands.py') - loadCog(f'./{cogsDir}/slashcommands/secondary/tcard.py') - loadCog(f'./{cogsDir}/slashcommands/secondary/pitch.py') - if yaml_load(pitchesFile): - loadCog(f'./{cogsDir}/events/secondary/pitch_listener.py') - if any([len(yaml_load(configFile)[x]['membership']) > 0 for x in yaml_load(configFile)]): - loadCog(f'./{cogsDir}/slashcommands/secondary/edit_membership.py') - -client.run(os.getenv('BOT_TOKEN')) \ No newline at end of file diff --git a/app/cogs/botcommands/prefix.py b/app/cogs/botcommands/prefix.py deleted file mode 100644 index 05c3bea..0000000 --- a/app/cogs/botcommands/prefix.py +++ /dev/null @@ -1,33 +0,0 @@ -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from bot import configFile, yaml_load, yaml_dump - -### Cog for handling the non-Slash prefix for native Bot commands. - -class Prefix(commands.Cog, name='Server Command Prefix'): - def __init__(self, client): - self.client = client - - #### Check if user is an administrator - async def cog_check(self, ctx): - for role in ctx.author.roles: - if role.permissions.administrator: - return True - return ctx.author.guild_permissions.administrator - - @commands.command( - name = 'changeprefix', - aliases = ['prefix'], - description = 'This command changes the prefix string for the native, non-slash command functionality of the bot. Defaults to `-`. It does not affect the workings of /commands.', - brief = 'Changes the bot prefix.' - ) - async def _changePrefix(self, ctx, prefix:str = '-'): - conf = yaml_load(configFile) - conf[str(ctx.guild.id)]['prefix'] = prefix.lower() - yaml_dump(conf, configFile) - await ctx.send(f"```{self.client.user.name}'s prefix for native bot commands has been changed to `{prefix}` for the guild `{ctx.guild.name}`.\n\nNote: This will not affect /commands.```") - -def setup(client): - client.add_cog(Prefix(client)) \ No newline at end of file diff --git a/app/cogs/controlcommands/debug.py b/app/cogs/controlcommands/debug.py deleted file mode 100644 index bee65b2..0000000 --- a/app/cogs/controlcommands/debug.py +++ /dev/null @@ -1,188 +0,0 @@ -import os -from dotenv import load_dotenv # Import OS variables from Dotenv file. -load_dotenv() # Load Dotenv. Delete this for production -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option # Slash Command features -from pprint import pprint - -from bot import clearConfig, configFile, checkConfig, loadCog, loadCogs, setConfig, unloadCog, unloadCogs, yaml_dump, yaml_load, reloadCog, reloadCogs, pitchesFile, cogsDir, parseConfigCheck - -##### Debug Cog -class Debug(commands.Cog, name='Debug Commands'): - def __init__(self, client): - self.client = client - - #### Permission Check: Only available to the bot's maintainer. - - async def cog_check(self, ctx:commands.Context): - conf = yaml_load(configFile) - for role in ctx.author.roles: - if 'maintainer' in conf[str(ctx.guild.id)]['roles']: - if role.id == conf[str(ctx.guild.id)]['roles']['maintainer']: return True - return ctx.author.id == ctx.guild.owner_id - - @commands.command( - name='testconfig', - description='Tests the completeness of the configuration values of the current guild by comparing it to a configuration blueprint.', - brief='Tests config values for current guild.', - aliases=['configtest'] - ) - async def _testconfig(self, ctx:commands.Context): - checkConfig(ctx.guild) - status, output = checkConfig(ctx.guild) - conf = yaml_load(configFile) - if not status: - await ctx.reply(f"```The Bot's configurations are incomplete for the guild {ctx.guild.name}. Some limited functions will still be available, but most features cannot be used until the configurations are complete.\n{parseConfigCheck(output)}\nYou can set these configuration values using the `/config` command.```") - elif status: - await ctx.reply(f"```The Bot's configurations for the guild {ctx.guild.name} are in order. The Bot is ready to interact with the guild.```") - - @commands.command( - name='reloadcogs', - description='Reloads cogs within the specified category, or provide `all` for all cogs. Default: `all`.', - brief='Reload multiple cogs by category.' - ) - async def _reload(self, ctx, cog_category: str='--all'): - reloadCogs(cog_category) - await ctx.reply(f'````{cog_category}` cogs have been reloaded.```') - - @commands.command( - name='unloadcogs', - description='Unload cogs within the specified category, or provide `all` for all cogs. Default: `all`.', - brief='Unload multiple cogs by category.' - ) - async def _unloadcogs(self, ctx, cog_category: str='--all'): - unloadCogs(cog_category) - loadCogs(cog_category) - await ctx.reply(f'````{cog_category}` cogs have been unloaded.```') - - @commands.command( - name='loadcogs', - description='Load cogs within the specified category, or provide `all` for all cogs. Default: `all`.', - brief='Load multiple cogs by category.' - ) - async def _loadcogs(self, ctx, cog_category: str='--all'): - unloadCogs(cog_category) - loadCogs(cog_category) - await ctx.reply(f'````{cog_category}` cogs have been loaded.```') - - @commands.command( - name='retrievecommands', - aliases=['slashcommands','retrieveslashcommands'], - description='Debugging command that retrieves all slash commands currently registered for this guild and this bot to the Python console.', - brief='Retrieves registered slash commands to console.' - ) - async def _retrievecommands(self, ctx:commands.Context): - c = await utils.manage_commands.get_all_commands( - bot_id=self.client.user.id, - bot_token=os.getenv('BOT_TOKEN'), - guild_id=ctx.guild.id - ) - pprint(c) - await ctx.reply(f'```All registered `/commands` have been fetched and sent to the Python console.```') - - @commands.command( - name='deletecommand', - aliases=['removecommand','delcommand','removeslashcommand', 'clearcommand', 'clearslashcommand'], - description='Debugging command that deletes a specified slash command. Key parameters `--all` for all commands in guild and `--global` for all commands globally', - brief='Deletes slash command. Default: all local commands.' - ) - async def _deleteCommand(self, ctx:commands.Context, command: str='--all'): - if command == '--all' or command == '-a': - await utils.manage_commands.remove_all_commands( - bot_id=self.client.user.id, - bot_token=os.getenv('BOT_TOKEN'), - guild_ids=[ ctx.guild.id ] - ) - await ctx.reply(f'```All slash commands have been deleted for the guild `{ctx.guild.name}``.```') - elif command == '--global' or command == '-g': - await utils.manage_commands.remove_all_commands( - bot_id=self.client.user.id, - bot_token=os.getenv('BOT_TOKEN'), - guild_ids=None - ) - await utils.manage_commands.remove_all_commands( - bot_id=self.client.user.id, - bot_token=os.getenv('BOT_TOKEN'), - guild_ids=[ int(g) for g in yaml_load(configFile)] - ) - await ctx.reply('```All slash commands have been deleted globally.```') - else: - c = await utils.manage_commands.get_all_commands( - bot_id=self.client.user.id, - bot_token=os.getenv('BOT_TOKEN'), - guild_id=ctx.guild.id - ) - target = list(filter(lambda t: t['name'] == command, c))[0]['id'] - await utils.manage_commands.remove_slash_command( - bot_id=self.client.user.id, - bot_token=os.getenv('BOT_TOKEN'), - guild_id=ctx.guild.id, - cmd_id=target - ) - await ctx.reply(f'```Slash command {command} has been deleted for the guild {ctx.guild.name}.```') - - @commands.command( - name='addcommand', - aliases=['installcommand','addslashcommand'], - description='Adds a slash command to the guild. Use keyword `--global` to add command globally.', - brief='Adds slash command' - ) - async def _addCommand(self, ctx:commands.Context, command:str, key:str=''): - await utils.manage_commands.add_slash_command( - bot_id=self.client.user.id, - bot_token=os.getenv('BOT_TOKEN'), - guild_id= None if key == '--global' or key == '-g' else ctx.guild.id, - cmd_name=command, - description='No Description' - ) - await ctx.reply(f'```The command /{command} has been added for the guild {ctx.guild.name}.```') - - @commands.command( - name='clearconfig', - aliases=['configclear'], - description='Clears any redundant entries in the config file of guilds the bot is not in. Does not require any argument.', - brief='Clears redundant entries from config file.' - ) - async def _clearconfig(self, ctx:commands.Context): - conf = yaml_load(configFile) - for key in list(conf): - clearConfig(key) - await ctx.reply(f'```Config entries for unknown guilds have been cleared.```') - - @commands.command( - name='setconfig', - aliases=['configsetup'], - description='Creates a config entry for the current guild, and if there are existing entries sets default values. Ignores any values that have already been set. Does not require any argument as it infers the guild from the context in which it was called.', - brief='Sets config entry for the current guild.' - ) - async def _setconfig(self, ctx:commands.Context): - setConfig(ctx.guild) - await ctx.reply(f'```Config entry has been added for guild `{ctx.guild.name}`.```') - - @commands.command( - name='synccommands', - aliases=['syncallcommands','syncslashcommands','resynccommands','sync','resync','syncall','resyncall'], - description='Syncs all slash commands between the bot and the Server.', - brief='Resyncs slash commands.' - ) - async def _synccommands(self, ctx:commands.Context): - await self.client.slash.sync_all_commands() - await ctx.reply(f'```All slash commands have been synced with the Server.```') - - @commands.command( - name='pitchreset', - description='Debug feature that resets the pitches in case of any error. Clears pitch disables Pitch listeners.', - brief='Reset running pitches.', - aliases=['resetpitches', 'resetpitch'] - ) - async def _pitchreset(self, ctx:commands.Context): - yaml_dump({}, pitchesFile) - if self.client.get_cog('Pitch Listener') is not None: - unloadCog(f'./{cogsDir}/events/secondary/pitch_listener.py') - await ctx.reply('```Pitches have been hard reset.```') - -def setup(client): - client.add_cog(Debug(client)) \ No newline at end of file diff --git a/app/cogs/controlcommands/migrate.py b/app/cogs/controlcommands/migrate.py deleted file mode 100644 index ae79a5e..0000000 --- a/app/cogs/controlcommands/migrate.py +++ /dev/null @@ -1,129 +0,0 @@ -import os -from dotenv import load_dotenv # Import OS variables from Dotenv file. -load_dotenv() # Load Dotenv. Delete this for production -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option # Slash Command features -from pprint import pprint - -from bot import clearConfig, configFile, loadCog, loadCogs, setConfig, unloadCog, unloadCogs, yaml_dump, yaml_load, reloadCog, reloadCogs, categoriesFile, gmFile, lookupFile, dataFile - -##### Migrate from Old Database Cog -class Migrate(commands.Cog, name='Migrate Command'): - def __init__(self, client): - self.client = client - - #### Permission Check: Only available to the bot's maintainer. - async def cog_check(self, ctx:commands.Context): - conf = yaml_load(configFile) - for role in ctx.author.roles: - if 'maintainer' in conf[str(ctx.guild.id)]['roles']: - if role.id == conf[str(ctx.guild.id)]['roles']['maintainer']: return True - return ctx.author.id == ctx.guild.owner_id - - @commands.command( - name='migrate', - aliases=['migrategames','migratedata'], - description='A command to migrate games from the old Guild settings to the new data structure by inferring the information of existing games from the existing roles and channels.', - brief='Infer guild data from games and channels' - ) - async def _migrate(self, ctx:commands.Context): - guildStr = str(ctx.guild.id) - conf = yaml_load(configFile) - categories = yaml_load(categoriesFile) - gms = yaml_load(gmFile) - lookup = yaml_load(lookupFile) - data = yaml_load(dataFile) - await ctx.reply(f'```Preparing to migrate guild `{ctx.guild.name}` from the data setup used by the old bot to the new bot. Inferring information from the channel structure.```') - await ctx.channel.trigger_typing() - gNum = 0 - for r in ctx.guild.roles: - if r.name.split(': ', maxsplit=1)[0] in ['WED', 'SUN AFT', 'SUN EVE', 'ONE SHOT', 'OTHER']: - flag = True - game_title = r.name.split(': ', maxsplit=1)[1] - t = r.name.split(': ', maxsplit=1)[0] - if t == 'WED': - timeslot = { - 'key': 'wedeve', - 'value': 'Wednesday Evenings' - } - elif t == 'SUN AFT': - timeslot = { - 'key': 'sunaft', - 'value': 'Sunday Afternoons' - } - elif t == 'SUN EVE': - timeslot = { - 'key': 'suneve', - 'value': 'Sunday Evenings' - } - elif t == 'ONE SHOT': - timeslot = { - 'key': 'oneshot', - 'value': 'One Shots' - } - elif t == 'OTHER': - timeslot = { - 'key': 'other', - 'value': 'Other' - } - gNum += 1 - await r.edit( - reason=f'`migrate` command issued by {ctx.author.display_name}', - mentionable=True, - colour=discord.Colour.green() - ) - c = discord.utils.get(ctx.guild.categories, name=r.name) - if c is None: - raise(f'Channel category for game `{r.name}` was not found.') - await ctx.channel.trigger_typing() - else: - permissions = c.overwrites - for p in permissions: - if isinstance(p,discord.Member) and permissions[p].manage_channels: break - t = None - tPos = len(ctx.guild.channels) - for tc in c.text_channels: - if tc.position <= tPos: - tPos = tc.position - t = tc - if timeslot['key'] not in conf[guildStr]['timeslots']: conf[guildStr]['timeslots'][timeslot['key']] = timeslot['value'] - if guildStr not in data: data[guildStr] = {} - if timeslot['key'] not in data[guildStr]: data[guildStr][timeslot['key']] = {} - data[guildStr][timeslot['key']][str(r.id)] = { - 'game_title': game_title, - 'gm': p.id, - 'max_players': 5, - 'min_players': None, - 'current_players': 0, - 'system': None, - 'platform': None, - 'role': r.id, - 'category': c.id, - 'text_channel': t.id, - 'header_message': None - } - if guildStr not in lookup: lookup[guildStr] = {} - lookup[guildStr][str(r.id)] = { - 'category': c.id, - 'gm': p.id, - 'time': timeslot['key'], - 'game_title': game_title, - 'text_channel': t.id - } - if guildStr not in gms: gms[guildStr] = {} - if str(p.id) not in gms[guildStr]: gms[guildStr][str(p.id)] = [] - gms[guildStr][str(p.id)].append(r.id) - if str(guildStr) not in categories: categories[guildStr] = {} - categories[guildStr][str(c.id)] = r.id - yaml_dump(data,dataFile) - yaml_dump(lookup,lookupFile) - yaml_dump(gms,gmFile) - yaml_dump(categories,categoriesFile) - yaml_dump(data, dataFile) - await ctx.reply(f'```Finished migrating {gNum} games to the new bot. All games were set up using the minimal mandatory information. The maximum number of players in each game has been reset to 5. Where necessary, new timecodes have been created for games. Please reboot the bot to allow for the new configurations and data to sync, and remove the cog `migrate.py` to avoid future data clashes.```') - -def setup(client): - client.add_cog(Migrate(client)) \ No newline at end of file diff --git a/app/cogs/events/on_command_error.py b/app/cogs/events/on_command_error.py deleted file mode 100644 index 88c7526..0000000 --- a/app/cogs/events/on_command_error.py +++ /dev/null @@ -1,30 +0,0 @@ -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option # Slash Command features -import logging -# logger and handler -from bot import configFile, yaml_load, yaml_dump - -#### Error Handler Event Listener -class on_command_error(commands.Cog, name='On Command Error'): - def __init__(self, client): - self.client = client - - @commands.Cog.listener() - async def on_command_error(self, ctx, error): - if isinstance(error, discord.DiscordException): - if isinstance(error, commands.CommandNotFound): - print(f'Error: User {ctx.author.name}#{ctx.author.discriminator} / {ctx.author.display_name} entered an invalid command <{ctx.message.clean_content}> in the guild {ctx.guild.name}.') - await ctx.reply(f'```Error: This is not a valid command.```') - elif isinstance(error, commands.CheckFailure): - print(f'Error: User {ctx.author.name}#{ctx.author.discriminator} / {ctx.author.display_name} is not authorised to issue the command <{ctx.command.name}> in the guild {ctx.guild.name}.') - await ctx.reply(f'```Error: You are not authorised to issue this command.```') - else: - print(f'User {ctx.author.name}#{ctx.author.discriminator} / {ctx.author.display_name} received error: "{error}" when attempting to issue command <{ctx.command.name}> in the guild {ctx.guild.name}.') - await ctx.reply(f'```Error: {error}```') - -def setup(client): - client.add_cog(on_command_error(client)) \ No newline at end of file diff --git a/app/cogs/events/on_connect.py b/app/cogs/events/on_connect.py deleted file mode 100644 index ba1b318..0000000 --- a/app/cogs/events/on_connect.py +++ /dev/null @@ -1,30 +0,0 @@ -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option # Slash Command features -import logging -# logger and handler -from bot import configFile, yaml_load, yaml_dump - -#### Actions for the Bot to take on connecting to Discord. -class on_connect(commands.Cog, name='On Connect Events'): - def __init__(self, client): - self.client = client - - @commands.Cog.listener() - async def on_connect(self): ## Actions for when bot logs in and enters ready state - print('Bot has connected.') - # logging.info('Bot has connected.') - await self.client.change_presence( - status = discord.Status.online, - activity = discord.Activity( - type = discord.ActivityType.listening, - name = f'/commands' - ) - ) - # for g in self.client.guilds: - -def setup(client): - client.add_cog(on_connect(client)) \ No newline at end of file diff --git a/app/cogs/events/on_guild_channel_delete.py b/app/cogs/events/on_guild_channel_delete.py deleted file mode 100644 index a22b3f9..0000000 --- a/app/cogs/events/on_guild_channel_delete.py +++ /dev/null @@ -1,33 +0,0 @@ -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option # Slash Command features -import logging -# logger and handler -from bot import configFile, yaml_load, yaml_dump - -##### Actions for the bot to take whenever a channel in a guild is deleted -class on_guild_channel_delete(commands.Cog, name='On Guild Channel Delete Events'): - def __init__(self, client): - self.client = client - - #### What to do if a mod channel gets deleted: try and pull default system channel, and if not then top-most channel - @commands.Cog.listener() - async def on_guild_channel_delete(self, channel): - conf = yaml_load(configFile) - if conf[str(channel.guild.id)]['channels']['mod'] == channel.id: - if channel.guild.system_channel is None: - p = len(channel.guild.channels) - c = None - for t in channel.guild.text_channels: - if t.position < p: - p = t.position - conf[str(channel.guild.id)]['channels']['mod'] = t.id - else: - conf[str(channel.guild.id)]['channels']['mod'] = channel.guild.system_channel.id - yaml_dump(conf, configFile) - -def setup(client): - client.add_cog(on_guild_channel_delete(client)) \ No newline at end of file diff --git a/app/cogs/events/on_guild_join.py b/app/cogs/events/on_guild_join.py deleted file mode 100644 index 6c98a59..0000000 --- a/app/cogs/events/on_guild_join.py +++ /dev/null @@ -1,26 +0,0 @@ -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option # Slash Command features -import logging -# logger and handler -from bot import checkConfig, parseConfigCheck, configFile, setConfig, yaml_load, yaml_dump - -#### Actions for the bot to take when the Bot joins a guild. - -class on_guild_join(commands.Cog, name='On Guild Join Events'): - def __init__(self, client): - self.client = client - - @commands.Cog.listener() - async def on_guild_join(self, guild): - setConfig(guild) - status, output = checkConfig(guild) - conf = yaml_load(configFile) - if not status: - await guild.get_channel(conf[str(guild.id)]['channels']['mod']).send(f"```The Bot's configurations are incomplete for the guild `{guild.name}`. Some limited functions will still be available, but most features cannot be used until the configurations are complete.\n{parseConfigCheck(output)}\nYou can set these configuration values using the `/config` command.```") - -def setup(client): - client.add_cog(on_guild_join(client)) \ No newline at end of file diff --git a/app/cogs/events/on_guild_remove.py b/app/cogs/events/on_guild_remove.py deleted file mode 100644 index 20e9776..0000000 --- a/app/cogs/events/on_guild_remove.py +++ /dev/null @@ -1,22 +0,0 @@ -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option # Slash Command features -import logging -# logger and handler -from bot import clearConfig, configFile, yaml_load, yaml_dump - -#### Actions for the bot to take when removed from a guild. - -class on_guild_remove(commands.Cog, name='On Guild Remove Events'): - def __init__(self, client): - self.client = client - - @commands.Cog.listener() - async def on_guild_remove(self, guild): ## Actions for when the bot is removed from a guild. - clearConfig(str(guild.id)) - -def setup(client): - client.add_cog(on_guild_remove(client)) \ No newline at end of file diff --git a/app/cogs/events/on_guild_role_create.py b/app/cogs/events/on_guild_role_create.py deleted file mode 100644 index f4281b3..0000000 --- a/app/cogs/events/on_guild_role_create.py +++ /dev/null @@ -1,27 +0,0 @@ -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option # Slash Command features -import logging -# logger and handler -from bot import configFile, yaml_load, yaml_dump - -##### Actions for the bot to take whenever there is a new role created. - -class on_guild_role_create(commands.Cog, name='On Guild Role Create Events'): - def __init__(self, client): - self.client = client - - @commands.Cog.listener() - async def on_guild_role_create(self, role): - conf = yaml_load(configFile) - #### Bot will only respond if the role is not a bot-managed role, and the role is an admin role - if not (role.is_bot_managed() or role.is_integration()) and role.permissions.administrator: - conf[str(role.guild.id)]['roles']['admin'].append(role.id) - yaml_dump(conf, configFile) - #### If the role is created with admin privileges, the bot adds the role to its configs. - -def setup(client): - client.add_cog(on_guild_role_create(client)) \ No newline at end of file diff --git a/app/cogs/events/on_guild_role_delete.py b/app/cogs/events/on_guild_role_delete.py deleted file mode 100644 index 57abc5a..0000000 --- a/app/cogs/events/on_guild_role_delete.py +++ /dev/null @@ -1,27 +0,0 @@ -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option # Slash Command features -import logging -# logger and handler -from bot import configFile, yaml_load, yaml_dump - -##### Actions for the bot to take whenever there is a new role deleted. - -class on_guild_role_delete(commands.Cog, name='On Guild Role Delete Events'): - def __init__(self, client): - self.client = client - - @commands.Cog.listener() - async def on_guild_role_delete(self, role): - conf = yaml_load(configFile) - #### Bot will only respond if the role is not a bot-managed role, and the role is an admin role - if role.id in conf[str(role.guild.id)]['roles']['admin']: - conf[str(role.guild.id)]['roles']['admin'].remove(role.id) - yaml_dump(conf, configFile) - #### If the role is one of the Admin roles and is deleted, updates the bot's config to delete that role, preventing unnecessary roles from accumulating. - -def setup(client): - client.add_cog(on_guild_role_delete(client)) \ No newline at end of file diff --git a/app/cogs/events/on_guild_role_update.py b/app/cogs/events/on_guild_role_update.py deleted file mode 100644 index ad389a8..0000000 --- a/app/cogs/events/on_guild_role_update.py +++ /dev/null @@ -1,34 +0,0 @@ -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option # Slash Command features -import logging -# logger and handler -from bot import configFile, yaml_load, yaml_dump - -##### Actions for the bot to take whenever there is a new role deleted. - -class on_guild_role_update(commands.Cog, name='On Guild Role Update Events'): - def __init__(self, client): - self.client = client - - @commands.Cog.listener() - async def on_guild_role_update(self, before, after): - conf = yaml_load(configFile) - #### If the original role is in the config as an admin role, and it subsequently is run by a bot or is not an admin, remove it from config - if before.id in conf[str(before.guild.id)]['roles']['admin']: - if after.is_bot_managed() or after.is_integration() or not after.permissions.administrator: - conf[str(after.guild.id)]['roles']['admin'].remove(after.id) - yaml_dump(conf, configFile) - - #### If the new role is an admin and is not already in the config, add it. - if not (after.is_bot_managed() or after.is_integration()) and after.permissions.administrator: - if after.id not in conf[str(after.guild.id)]['roles']['admin']: - conf[str(after.guild.id)]['roles']['admin'].remove(after.id) - yaml_dump(conf, configFile) - #### If the role is one of the Admin roles and is deleted, updates the bot's config to delete that role, preventing unnecessary roles from accumulating. - -def setup(client): - client.add_cog(on_guild_role_update(client)) \ No newline at end of file diff --git a/app/cogs/events/on_guild_update.py b/app/cogs/events/on_guild_update.py deleted file mode 100644 index 140c4dc..0000000 --- a/app/cogs/events/on_guild_update.py +++ /dev/null @@ -1,25 +0,0 @@ -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option # Slash Command features -import logging -# logger and handler -from bot import configFile, yaml_load, yaml_dump - -##### Actions for the bot to take whenever the guild info or ownership are updated. -class on_guild_update(commands.Cog, name='On Guild Update Events'): - def __init__(self, client): - self.client = client - - @commands.Cog.listener() - async def on_guild_update(self, before, after): - conf = yaml_load(configFile) - conf[str(after.id)]['name'] = after.name - conf[str(after.id)]['owner'] = after.owner_id - # Updates guild name and channel - yaml_dump(conf,configFile) - -def setup(client): - client.add_cog(on_guild_update(client)) \ No newline at end of file diff --git a/app/cogs/events/on_message.py b/app/cogs/events/on_message.py deleted file mode 100644 index 9472c38..0000000 --- a/app/cogs/events/on_message.py +++ /dev/null @@ -1,46 +0,0 @@ -import os # OS Locations -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands, tasks # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option # Slash Command features -from datetime import datetime -import logging -# logger and handler -from bot import configFile, yaml_load - -#### Actions the bot will take on messages being sent in the channel. - -##### Message Listener Cog -class on_message(commands.Cog, name='On Message Events'): - def __init__(self, client): - self.client = client - - @commands.Cog.listener() - async def on_message(self,message): - if message.author.bot or message.author.id == message.guild.owner_id: - return - for role in message.author.roles: - if role.permissions.administrator: - return - conf = yaml_load(configFile) - guild = message.guild - guildStr = str(guild.id) - if 'notifications' in conf[guildStr]: - if conf[guildStr]['notifications'].get('help', False): - if 'help' in conf[guildStr]['channels'] and 'committee' in conf[guildStr]['roles']: - if message.channel.id == conf[guildStr]['channels']['help'] and isinstance(guild.get_role(conf[guildStr]['roles']['committee']), discord.Role): - modChannel = self.client.get_channel(conf[guildStr]['channels']['mod']) - committeeRole = guild.get_role(conf[guildStr]['roles']['committee']) - embed = discord.Embed( - title = f'[New Query in Help]({message.jump_url})', - description = message.content, - colour = discord.Colour.orange() - ) - embed.set_footer(text=datetime.now().strftime('%a %-d %b %y, %-I:%M %p')) - embed.set_author(name=message.author.display_name, icon_url=message.author.avatar_url) - await modChannel.send(f'{committeeRole.mention}\n```There has been a new help query posted.```\n{message.author.mention}` posted in `{message.channel.mention}`.`', embed = embed) - -def setup(client): - client.add_cog(on_message(client)) \ No newline at end of file diff --git a/app/cogs/events/on_ready.py b/app/cogs/events/on_ready.py deleted file mode 100644 index edaec96..0000000 --- a/app/cogs/events/on_ready.py +++ /dev/null @@ -1,44 +0,0 @@ -import os # OS Locations -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option # Slash Command features -# import discord_components -import logging -# logger and handler -from bot import checkConfig, clearConfig, configFile, parseConfigCheck, setConfig, yaml_dump, yaml_load, loadCogs, unloadCogs - -#### Actions for the Bot to take once it is ready to interact with commands. -class on_ready(commands.Cog, name='On Ready Events'): - def __init__(self, client): - self.client = client - - @commands.Cog.listener() - async def on_ready(self): - - # discord_components.DiscordComponents(self.client) - - #### Create any missing config entries for guilds - for guild in self.client.guilds: - setConfig(guild) - - #### Delete any extra config entries for guilds the bot is not in - conf = yaml_load(configFile) - for key in list(conf): - clearConfig(key) - - #### Check completeness of configurations - for guild in self.client.guilds: - status, output = checkConfig(guild) - conf = yaml_load(configFile) - if not status: - await guild.get_channel(conf[str(guild.id)]['channels']['mod']).send(f"```The Bot's configurations are incomplete for the guild `{guild.name}`. Some limited functions will still be available, but most features cannot be used until the configurations are complete.\n{parseConfigCheck(output)}\nYou can set these configuration values using the `/config` command.```") - - # #### Reload the /commands after the configs have finished loading. - # unloadCogs('slashcommands') - # loadCogs('slashcommands') - -def setup(client): - client.add_cog(on_ready(client)) \ No newline at end of file diff --git a/app/cogs/events/secondary/pitch_listener.py b/app/cogs/events/secondary/pitch_listener.py deleted file mode 100644 index 07ba9d5..0000000 --- a/app/cogs/events/secondary/pitch_listener.py +++ /dev/null @@ -1,201 +0,0 @@ -import os # OS Locations -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils, ComponentContext # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option, create_permission # Slash Command features -from discord_slash.model import SlashCommandPermissionType, ButtonStyle -from discord_slash.client import SlashCommand -from discord_slash.utils.manage_components import create_select, create_select_option, create_actionrow, wait_for_component, create_button, create_actionrow - -from bot import configFile, yaml_load, yaml_dump, cogsDir, unloadCog, dataFile, lookupFile, gmFile, categoriesFile, pitchesFile, configFile, dataFile, lookupFile, unloadCog - -#### Pitch Command - -class PitchListener(commands.Cog, name='Pitch Listener'): - def __init__(self, client): - self.client = client - - @commands.Cog.listener(name='on_component') - async def _response_defer(self, ctx:ComponentContext): - pitches = yaml_load(pitchesFile) - guildStr = str(ctx.guild.id) - if not pitches.get(guildStr, {}): return # If no pitches for current guild, ignore. - [timeslot] = [*pitches[guildStr]] - if ctx.origin_message.id not in pitches[guildStr][timeslot]['messages'] + [pitches[guildStr][timeslot]['control']]: return # If the context id is not in the pitch menu, ignore - await ctx.defer(hidden = True) - - @commands.Cog.listener(name='on_component') - async def _pitch_listener(self, ctx:ComponentContext): - conf = yaml_load(configFile) - data = yaml_load(dataFile) - lookup = yaml_load(lookupFile) - pitches = yaml_load(pitchesFile) - guildStr = str(ctx.guild.id) - if not pitches.get(guildStr, {}): return # If no pitches for current guild, ignore. - [timeslot] = [*pitches[guildStr]] - if ctx.origin_message.id not in pitches[guildStr][timeslot]['messages'] + [pitches[guildStr][timeslot]['control']]: return # If the context id is not in the pitch menu, ignore - newcomer = returning_player = None - if 'newcomer' in conf[guildStr]['roles']: newcomer = discord.utils.find(lambda x: x.id == conf[guildStr]['roles']['newcomer'], ctx.guild.roles) - if 'returning_player' in conf[guildStr]['roles']: returning_player = discord.utils.find(lambda x: x.id == conf[guildStr]['roles']['returning_player'], ctx.guild.roles) - control = await ctx.channel.fetch_message(pitches[guildStr][timeslot]['control']) - header_message = await ctx.channel.fetch_message(pitches[guildStr][timeslot]['header_message']) - if ctx.origin_message.id == control.id: - if not (set(ctx.author.roles) & set([ctx.guild.get_role(x) for x in conf[str(ctx.guild.id)]['roles']['admin']]) or ctx.author == ctx.guild.owner): - await ctx.send(f'```Error: You are not authorised to do this. The control panel may only be issued by an administrator.```',hidden=True) - else: - if ctx.custom_id == 'allow_returning': - await ctx.channel.set_permissions(reason=f'/pitch control switch triggered by {ctx.author.display_name}', target=returning_player, read_messages=True) - await ctx.send(f'```Returning Players have now been allowed access to the pitch menu.```', hidden=True) - if ctx.custom_id == 'allow_newcomers': - await ctx.channel.set_permissions(reason=f'/pitch control switch triggered by {ctx.author.display_name}', target=newcomer, read_messages=True) - await ctx.send(f'```Newcomers have now been allowed access to the pitch menu.```', hidden=True) - if ctx.custom_id == 'allow_all': - await ctx.channel.set_permissions(reason=f'/pitch control switch triggered by {ctx.author.display_name}', target=ctx.guild.default_role, read_messages= True, send_messages=False) - await ctx.send(f'```All members have now been allowed access to the pitch menu.```', hidden=True) - if ctx.custom_id == 'close_pitches': - await ctx.send(f'```Please wait: closing pitches.```', hidden=True) - await header_message.delete() - for message in pitches[guildStr][timeslot]['messages']: - m = await ctx.channel.fetch_message(message) - await m.delete() - await control.delete() - await ctx.channel.edit(reason=f'/pitch command issued by {ctx.author.display_name}', overwrites={}) - await ctx.channel.send('```Pitch menu cleared. Pitches have now concluded.```') - del pitches[guildStr][timeslot] - if not pitches[guildStr]: del pitches[guildStr] - yaml_dump(pitches,pitchesFile) - if not pitches and self.client.get_cog('Pitch Listener') is not None: - unloadCog(f'./{cogsDir}/events/secondary/pitch_listener.py') - #### Deactivate global pitch listener - else: - index = int(ctx.custom_id.split('_',1)[1]) - if ctx.custom_id.startswith('join_'): - if set([x.id for x in ctx.author.roles]) & set(pitches[guildStr][timeslot]['roles'].values()): - for r in list(set([x.id for x in ctx.author.roles]) & set(pitches[guildStr][timeslot]['roles'].values())): - role = ctx.guild.get_role(r) - rStr = str(role.id) - if role.id != pitches[guildStr][timeslot]['roles'][index]: - await ctx.author.remove_roles(role,reason=f'/pitch interaction by {ctx.author.display_name}') - i = pitches[guildStr][timeslot]['indices'][role.id] - element = pitches[guildStr][timeslot]['entries'][i] - gm = await self.client.fetch_user(element['gm']) - if ctx.author.id != lookup[guildStr][rStr]['gm']: - data[guildStr][timeslot][rStr]['current_players'] -= 1 - element['current_players'] -= 1 - o = f'_ _\n***{element["game_title"]}*** (GM: {gm.mention})\n```\n' - if element['system'] is not None: o = ''.join([o,f'System: {element["system"]}\n']) - if element['min_players'] is not None: o = ''.join([o,f'Minimum Players: {str(element["min_players"])} ']) - if element['max_players'] is not None: o = ''.join([o,f'Maximum Players: {str(element["max_players"])}\n']) - if element['platform'] is not None: o = ''.join([o,f'Platform: {element["platform"]}\n']) - o = ''.join([o,f'```']) - spaces_remaining = element["max_players"] - element["current_players"] - o = ''.join([o,f'~~Spaces Remaining: {str(0)}~~'])if spaces_remaining <= 0 else ''.join([o,f'Spaces Remaining: {str(spaces_remaining)}']) - m = await ctx.channel.fetch_message(pitches[guildStr][timeslot]['messages'][i]) - await m.edit(content=o) - tc = discord.utils.find(lambda x: x.id == lookup[guildStr][rStr]['text_channel'],ctx.guild.text_channels) - if tc is None: - c = discord.utils.find(lambda x: x.id == lookup[guildStr][rStr]['category'],ctx.guild.categories) - if c is not None: - tPos = len(ctx.guild.channels) - for t in c.text_channels: - if t.position <= tPos: - tc = t - tPos = t.position - if tc is not None: - await tc.send(f'```{ctx.author.display_name} has left the game.```') - role = ctx.guild.get_role(pitches[guildStr][timeslot]['roles'][index]) - rStr = str(role.id) - if role in ctx.author.roles: - await ctx.send(f'```Error: You are already in the game `{lookup[guildStr][rStr]["game_title"]}`.```', hidden=True) - else: - await ctx.author.add_roles(role,reason=f'/pitch interaction by {ctx.author.display_name}') - element = pitches[guildStr][timeslot]['entries'][index] - if ctx.author.id != lookup[guildStr][rStr]['gm']: - data[guildStr][timeslot][rStr]['current_players'] += 1 - element['current_players'] += 1 - gm = await self.client.fetch_user(element['gm']) - o = f'_ _\n***{element["game_title"]}*** (GM: {gm.mention})\n```\n' - if element['system'] is not None: o = ''.join([o,f'System: {element["system"]}\n']) - if element['min_players'] is not None: o = ''.join([o,f'Minimum Players: {str(element["min_players"])} ']) - if element['max_players'] is not None: o = ''.join([o,f'Maximum Players: {str(element["max_players"])}\n']) - if element['platform'] is not None: o = ''.join([o,f'Platform: {element["platform"]}\n']) - o = ''.join([o,f'```']) - spaces_remaining = element["max_players"] - element["current_players"] - o = ''.join([o,f'~~Spaces Remaining: {str(0)}~~'])if spaces_remaining <= 0 else ''.join([o,f'Spaces Remaining: {str(spaces_remaining)}']) - m = await ctx.channel.fetch_message(pitches[guildStr][timeslot]['messages'][index]) - await m.edit(content=o) - await ctx.send(f'You have joined the game `{lookup[guildStr][rStr]["game_title"]}`.',hidden=True) - tc = discord.utils.find(lambda x: x.id == lookup[guildStr][rStr]['text_channel'],ctx.guild.text_channels) - if tc is None: - c = discord.utils.find(lambda x: x.id == lookup[guildStr][rStr]['category'],ctx.guild.categories) - if c is not None: - tPos = len(ctx.guild.channels) - for t in c.text_channels: - if t.position <= tPos: - tc = t - tPos = t.position - if tc is not None: - await tc.send(f'```{ctx.author.display_name} has joined the game.```') - ts = lookup[guildStr][rStr]['time'] - p = await tc.pins() - if p is not None: - header = discord.utils.find(lambda x: x.id == data[guildStr][ts][rStr]['header_message'], p) - if header is not None: - text = header.content.split('\n') - for line, item in enumerate(text): - if 'Current Players: ' in item: - text[line] = f'Current Players: {str(data[guildStr][ts][rStr]["current_players"]) if data[guildStr][ts][rStr]["current_players"] is not None else str(0)}' - break - await header.edit(content='\n'.join(text)) - elif ctx.custom_id.startswith('leave_'): - role = ctx.guild.get_role(pitches[guildStr][timeslot]['roles'][index]) - rStr = str(role.id) - if role not in ctx.author.roles: - await ctx.send(f'```Error: You are not in the game `{lookup[guildStr][rStr]["game_title"]}`.```', hidden=True) - else: - await ctx.author.remove_roles(role,reason=f'/pitch interaction by {ctx.author.display_name}') - element = pitches[guildStr][timeslot]['entries'][index] - if ctx.author.id != lookup[guildStr][rStr]['gm']: - data[guildStr][timeslot][rStr]['current_players'] -= 1 - element['current_players'] -= 1 - gm = await self.client.fetch_user(element['gm']) - o = f'_ _\n***{element["game_title"]}*** (GM: {gm.mention})\n```\n' - if element['system'] is not None: o = ''.join([o,f'System: {element["system"]}\n']) - if element['min_players'] is not None: o = ''.join([o,f'Minimum Players: {str(element["min_players"])} ']) - if element['max_players'] is not None: o = ''.join([o,f'Maximum Players: {str(element["max_players"])}\n']) - if element['platform'] is not None: o = ''.join([o,f'Platform: {element["platform"]}\n']) - o = ''.join([o,f'```']) - spaces_remaining = element["max_players"] - element["current_players"] - o = ''.join([o,f'~~Spaces Remaining: {str(0)}~~'])if spaces_remaining <= 0 else ''.join([o,f'Spaces Remaining: {str(spaces_remaining)}']) - me = await ctx.channel.fetch_message(pitches[guildStr][timeslot]['messages'][index]) - await me.edit(content=o) - await ctx.send(f'You have left the game `{lookup[guildStr][rStr]["game_title"]}`.',hidden=True) - tc = discord.utils.find(lambda x: x.id == lookup[guildStr][rStr]['text_channel'],ctx.guild.text_channels) - if tc is None: - c = discord.utils.find(lambda x: x.id == lookup[guildStr][rStr]['category'],ctx.guild.categories) - if c is not None: - tPos = len(ctx.guild.channels) - for t in c.text_channels: - if t.position <= tPos: - tc = t - tPos = t.position - if tc is not None: - await tc.send(f'```{ctx.author.display_name} has left the game.```') - ts = lookup[guildStr][rStr]['time'] - p = await tc.pins() - if p is not None: - header = discord.utils.find(lambda x: x.id == data[guildStr][ts][rStr]['header_message'], p) - if header is not None: - text = header.content.split('\n') - for line, item in enumerate(text): - if 'Current Players: ' in item: - text[line] = f'Current Players: {str(data[guildStr][ts][rStr]["current_players"]) if data[guildStr][ts][rStr]["current_players"] is not None else str(0)}' - break - await header.edit(content='\n'.join(text)) - yaml_dump(data, dataFile) - yaml_dump(pitches, pitchesFile) - -def setup(client): - client.add_cog(PitchListener(client)) \ No newline at end of file diff --git a/app/cogs/membership/member_verification.py b/app/cogs/membership/member_verification.py deleted file mode 100644 index 3a10903..0000000 --- a/app/cogs/membership/member_verification.py +++ /dev/null @@ -1,126 +0,0 @@ -import os # OS Locations -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils, ComponentContext # Slash Command Library -from discord_slash.utils.manage_components import create_select, create_select_option, create_actionrow, wait_for_component, create_button, create_actionrow -from discord_slash.utils.manage_commands import create_choice, create_option -from discord_slash.model import ButtonStyle -import logging -# logger and handler -from bot import configFile, yaml_load, categoriesFile, configFile, lookupFile - -##### Membership Verification Cog - -class MemberVerification(commands.Cog, name='Member Verification Cog'): - def __init__(self, client): - self.client = client - - @commands.Cog.listener(name='on_message') - async def _submission_listener(self, message): - conf = yaml_load(configFile) - categories = yaml_load(categoriesFile) - guildStr = str(message.guild.id) - lookup = yaml_load(lookupFile) - if conf[guildStr]['channels'].get('signup', None) is None: return - if message.author.bot: return - if message.channel.id != conf[guildStr]['channels']['signup']: return - if not (message.attachments): - await message.author.send(f'```Error: The message you posted in the `{message.channel.name}` channel of the guild `{message.guild.name}` was invalid. Your post must contain a screensot of your proof of purchase for membership.```') - await message.delete() - return - membership = [discord.utils.get(message.guild.roles, id=x) for x in conf[guildStr]['membership']] - membership_options = [create_select_option(label=x.name, value=str(x.id), description='Membership type.') for x in membership] - admin_buttons = [] - if conf[guildStr]['roles'].get('student', None) is not None: admin_buttons.append(create_button(style=ButtonStyle.blurple, label='Student', emoji='📚', custom_id=f'student_{message.id}')) - admin_buttons.append(create_button(style=ButtonStyle.grey, label='Review', emoji='⚠️', custom_id=f'review_{message.id}')) - admin_buttons.append(create_button(style=ButtonStyle.red, label='Deny', emoji='✖️', custom_id=f'deny_{message.id}')) - admin_buttons.append(create_button(style=ButtonStyle.green, label='Done', emoji='▶️', custom_id=f'done_{message.id}')) - o = f'```For Administrators: Please verify the membership request submitted by `{message.author.display_name}`.```' - admins = '|'.join([discord.utils.get(message.guild.roles, id=x).mention for x in conf[guildStr]['roles']['admin']]) - o = ''.join((admins,o)) - m = await message.reply( - content= o, - components=[ - create_actionrow( - create_select( - options=membership_options, - custom_id=f'membership_{message.id}', - placeholder=f'Please select a membership to assign to {message.author.display_name}', - min_values=1, - max_values=1 - ) - ), - create_actionrow( - *admin_buttons - ) - ] - ) - if conf[guildStr]['notifications'].get('signup', False): - embed = discord.Embed( - title = f'Member Verification Request', - description = f'User: {message.author.name}\n\n[Jup to Message]({m.jump_url})', - colour = discord.Colour.blue(), - ) - if conf[guildStr]['channels'].get('mod', None) is not None: - await message.guild.get_channel(conf[guildStr]['channels']['mod']).send(f'```New membership verification request.```\n{admins}', embed=embed) - - - @commands.Cog.listener(name='on_component') - async def _verification_response(self, ctx:ComponentContext): - conf = yaml_load(configFile) - categories = yaml_load(categoriesFile) - guildStr = str(ctx.guild.id) - admins = '|'.join([discord.utils.get(ctx.guild.roles, id=x).mention for x in conf[guildStr]['roles']['admin']]) - lookup = yaml_load(lookupFile) - if ctx.channel.id != conf[guildStr]['channels']['signup']: return - if not (set(ctx.author.roles) & set([ctx.guild.get_role(x) for x in conf[str(ctx.guild.id)]['roles']['admin']]) or ctx.author == ctx.guild.owner): - await ctx.send(f'```Error: You are not authorised to assign memberships for guild `{ctx.guild.name}`. Only administrators may assign memberships using this interface.```', hidden=True) - else: - submission = await ctx.channel.fetch_message(int(ctx.custom_id.split('_',1)[1])) - if ctx.custom_id.startswith('done_'): - await ctx.send(f'```Membership verification complete.```', hidden=True) - await ctx.origin_message.delete() - elif ctx.custom_id.startswith('deny_'): - await ctx.send(f'```Membership verification denied.```', hidden=True) - embed = discord.Embed( - title = submission.author.name, - description = f'[Jup to Message]({submission.jump_url})', - colour = discord.Colour.red(), - ) - await submission.author.send(f'```Your membership for guild `{submission.guild.name}` could not be verified. Please make sure your name and the kind of membership that you have bought are visible in the screenshot you upload. Please contact a Committee member if you have any difficulties.```') - if conf[guildStr]['channels'].get('mod', None) is not None: - await submission.guild.get_channel(conf[guildStr]['channels']['mod']).send(f'```Verifying the membership of {submission.author.display_name} failed.```\n{admins}', embed=embed) - await ctx.origin_message.delete() - elif ctx.custom_id.startswith('review_'): - await ctx.send(f'```Membership review requested.```', hidden=True) - embed = discord.Embed( - title = submission.author.name, - description = f'[Jup to Message]({submission.jump_url})', - colour = discord.Colour.orange() - ) - await submission.author.send(f'```Your membership for guild `{submission.guild.name}` needs to be reviewed by a Committee member.```') - if conf[guildStr]['channels'].get('mod', None) is not None: - await submission.guild.get_channel(conf[guildStr]['channels']['mod']).send(f'```There is a problem verifying the membership of {submission.author.display_name}.\nCould someone verify this person\'s membership manually via the EUSA portal?.```\n{admins}', embed=embed) - elif ctx.custom_id.startswith('student_'): - await ctx.send(f'````Student` role granted.```', hidden=True) - student_role = submission.guild.get_role(conf[guildStr]['roles']['student']) - await submission.author.add_roles(student_role, reason=f'Membership Verification: Student role assigned by `{ctx.author.display_name}`.') - await submission.author.send(f'```You have additionally been assigned the role `Student` in the guild `{submission.guild.name}`.```') - elif ctx.custom_id.startswith('membership_'): - [selected_membership] = ctx.selected_options - selected_role = ctx.guild.get_role(int(selected_membership)) - if selected_role not in submission.author.roles: - await ctx.send(f'```Membership `{selected_role.name}` added to member `{submission.author.display_name}`.```', hidden=True) - await submission.author.add_roles(selected_role, reason=f'Membership Verification: Membership verified by `{ctx.author.display_name}`.') - await submission.author.send(f'```Your membership for guild `{submission.guild.name}` has been verified and you have been assigned the role `{selected_role.name}`.```') - else: - await ctx.send(f'```Membership `{selected_role.name}` removed from member `{submission.author.display_name}`.```', hidden=True) - await submission.author.remove_roles(selected_role, reason=f'Membership Verification: Membership removed by `{ctx.author.display_name}`.') - await submission.author.send(f'```Your role `{selected_role.name}` has been removed in the guild `{submission.guild.name}`.```') - else: - pass - -def setup(client): - client.add_cog(MemberVerification(client)) \ No newline at end of file diff --git a/app/cogs/membership/restriction_listener.py b/app/cogs/membership/restriction_listener.py deleted file mode 100644 index b53ca5a..0000000 --- a/app/cogs/membership/restriction_listener.py +++ /dev/null @@ -1,54 +0,0 @@ -import os # OS Locations -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option # Slash Command features -import logging -# logger and handler -from bot import configFile, yaml_load, categoriesFile, configFile, lookupFile - -##### Membership Restriction Message Listener Cog -class RestrictionListener(commands.Cog, name='Membership Restriction Listener'): - def __init__(self, client): - self.client = client - - # Block non-verified user from posting messages. - @commands.Cog.listener(name='on_message') - async def _restriction_listener(self,message): - conf = yaml_load(configFile) - categories = yaml_load(categoriesFile) - guildStr = str(message.guild.id) - lookup = yaml_load(lookupFile) - if not conf[guildStr].get('restrict',False): return - if message.author.bot: return - if message.channel.category is None: return - if str(message.channel.category.id) not in categories[guildStr]: return - if (set(message.author.roles) & set([message.guild.get_role(x) for x in conf[guildStr]['roles']['admin']]) or message.author == message.guild.owner): return - if set(message.author.roles) & set([message.guild.get_role(x) for x in conf[guildStr]['membership']]): return - if message.channel.overwrites_for(message.author).manage_channels: return - signupChannel = discord.utils.find(lambda x: x.id == conf[guildStr]['channels']['signup'], message.guild.channels) - await message.channel.send(f'```{message.author.display_name} does not have a verified membership of `{message.guild.name}`. Please submit your membership confirmation for verification in the {signupChannel.name} to ensure you have access to your game.```\n{message.author.mention} | {signupChannel.mention}') - await message.channel.category.set_permissions(message.author, send_messages = False, connect = False, reason=f'Membership Restriction: {message.author.display_name} is not a verified member.') - await message.delete() - - # Reinstate on verification - @commands.Cog.listener(name='on_member_update') - async def _reinstate_listener(self, before, after): - if before.roles == after.roles: return - if len(set(after.roles) - set(before.roles)) != 1: return - [d] = list(set(after.roles) - set(before.roles)) - conf = yaml_load(configFile) - categories = yaml_load(categoriesFile) - guildStr = str(after.guild.id) - if d.id not in conf[guildStr]['membership']: return - lookup = yaml_load(lookupFile) - if not set(after.roles) & set([after.guild.get_role(x) for x in conf[guildStr]['membership']]): return - for game in list(set(after.roles) & set([after.guild.get_role(int(x)) for x in lookup[guildStr]])): - c = discord.utils.get(after.guild.categories, id=lookup[guildStr][str(game.id)]['category']) - if c is not None: - if c.overwrites_for(after).send_messages is False: await c.set_permissions(after, overwrite = None, reason= f'Membership Restriction: {after.display_name} has been verified and reinstated.') - -def setup(client): - client.add_cog(RestrictionListener(client)) \ No newline at end of file diff --git a/app/cogs/slashcommands/config.py b/app/cogs/slashcommands/config.py deleted file mode 100644 index 9f45b1b..0000000 --- a/app/cogs/slashcommands/config.py +++ /dev/null @@ -1,416 +0,0 @@ -import os # OS Locations -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option, create_permission # Slash Command features -from discord_slash.model import SlashCommandPermissionType -import re - -from bot import configFile, yaml_load, yaml_dump, loadCog, unloadCog, reloadCog, cogsDir, slash, lookupFile - -##### Configuration Cog -class Configuration(commands.Cog, name='Configuration Commands'): - def __init__(self, client): - self.client = client - - guild_ids=[int(guildKey) for guildKey in yaml_load(configFile)] - permissions = {} - conf = yaml_load(configFile) - for gStr in conf: - permissions[int(gStr)] = [] - permissions[int(gStr)].append(create_permission(id=conf[gStr]['owner'],id_type=SlashCommandPermissionType.USER,permission=True)) - for admin in conf[gStr]['roles']['admin']: permissions[int(gStr)].append(create_permission(id=admin,id_type=SlashCommandPermissionType.ROLE,permission=True)) - - @cog_ext.cog_subcommand( - base='config', - # subcommand_group='role', - name='roles', - description='Designates the various key roles referenced by the Bot.', - base_description='Commands for configuring the various parameters of the Guild.', - base_default_permission=False, - base_permissions=permissions, - # subcommand_group_description='Designates the various key command roles for the guild.', - guild_ids=guild_ids, - options=[ - create_option( - name='key', - description='The name of the role parameter being assigned.', - option_type=3, - required=True, - choices=[ - create_choice( - name='`Bot` role', - value='bot' - ), - create_choice( - name='`Committee` role', - value='committee' - ), - create_choice( - name='`Newcomer` role', - value='newcomer' - ), - create_choice( - name='`Returning Player` role', - value='returning_player' - ), - create_choice( - name='`Student` role', - value='student' - ), - create_choice( - name='`Bot Maintainer` role', - value='maintainer' - ) - ] - ), - create_option( - name='role_exists', - description='Whether or not a role for this parameter already exists', - option_type=5, - required=True - ), - create_option( - name='role', - description='The role assigned to the parameter.', - option_type=8, - required=False - ) - ] - ) - async def _config_roles(self, ctx:SlashContext, key:str, role_exists:bool, role:discord.Role=None): - if role_exists and role is None: - await ctx.send(f'```If the role you want to assign to `{key}` already exists, you must assign it. Please select a role to assign.```',hidden=True) - return - if not role_exists and role is not None: - await ctx.send(f'```You have specified a role to assign to `{key}` but have also specified it does not exist. If a role does not exist, do not assign a role.```',hidden=True) - return - r = role - if not role_exists: - r = await ctx.guild.create_role( - name=key, - permissions=discord.Permissions(administrator=True) if key == 'committee' else discord.Permissions().none(), - reason=f'`/config roles` command issued by {ctx.author.display_name}', - colour = discord.Colour.orange() if key == 'bot' else discord.Colour.blue() if key == 'committee' else discord.Colour.default(), - hoist=True if key == 'committee' else None, - ) - else: - await r.edit( - permissions=discord.Permissions(administrator=True) if key == 'committee' else discord.Permissions().none(), - reason=f'`/config roles` command issued by {ctx.author.display_name}', - colour = discord.Colour.orange() if key == 'bot' else discord.Colour.blue() if key == 'committee' else discord.Colour.default(), - hoist=True if key == 'committee' or key == 'bot' else None, - ) - conf = yaml_load(configFile) - guildStr = str(ctx.guild.id) - if 'roles' not in conf[guildStr]: - conf[guildStr]['roles'] = {} - conf[guildStr]['roles'][key] = int(r.id) - yaml_dump(conf, configFile) - await ctx.send(f'```The `{key}` role for the guild `{ctx.guild.name}` has been set to `{r.name}`.```\n{r.mention}',hidden=True) - if any(['bot' in yaml_load(configFile)[x]['roles'] for x in yaml_load(configFile)]): - if any([yaml_load(configFile)[x]['timeslots'] for x in yaml_load(configFile)]): - flag = False - if self.client.get_cog('Game Create') is None: - loadCog(f'./{cogsDir}/slashcommands/secondary/game_create.py') - flag = True - if any([x for x in yaml_load(lookupFile).values()]): - if self.client.get_cog('Game Management') is None: - loadCog(f'./{cogsDir}/slashcommands/secondary/game_management.py') - flag = True - if self.client.get_cog('Player Commands') is None: - loadCog(f'./{cogsDir}/slashcommands/secondary/player_commands.py') - flag = True - if self.client.get_cog('T-Card Command') is None: - loadCog(f'./{cogsDir}/slashcommands/secondary/tcard.py') - flag = True - if self.client.get_cog('Pitch Command') is None: - loadCog(f'./{cogsDir}/slashcommands/secondary/pitch.py') - flag = True - if flag: await self.client.slash.sync_all_commands() - - @cog_ext.cog_subcommand( - base='config', - # subcommand_group='channel', - name='channels', - description='Designate the various key channels for the Bot to interact with.', - # base_description='Commands for configuring the various parameters of the Guild', - base_default_permission=False, - # base_permissions=permissions, - # subcommand_group_description='Designates the various key Bot channels for the guild.', - guild_ids=guild_ids, - options=[ - create_option( - name='key', - description='The name of the channel parameter being assigned.', - option_type=3, - required=True, - choices=[ - create_choice( - name='Help Channel', - value='help' - ), - create_choice( - name='Mod Channel', - value='mod' - ), - create_choice( - name='Signup Channel', - value='signup' - ) - ] - ), - create_option( - name='channel_exists', - description='Does the channel for this parameter already exist?', - option_type=5, - required=True - ), - create_option( - name='channel', - description='The channel assigned to the parameter.', - option_type=7, - required=False - ) - ] - ) - async def _config_channels(self, ctx:SlashContext, key:str, channel_exists:bool, channel:discord.TextChannel=None): - if channel_exists and channel is None: - await ctx.send(f'```If the channel you want to assign to `{key}` already exists, you must assign it. Please select a role to assign.```',hidden=True) - return - if not channel_exists and channel is not None: - await ctx.send(f'```You have specified a channel to assign to `{key}` but have also specified it does not exist. If a channel does not exist, do not assign a channel.```',hidden=True) - return - c = channel - if not channel_exists: - c = await ctx.guild.create_text_channel( - name=key, - overwrites={}, - reason=f'`/config channels` command issued by {ctx.author.display_name}' - ) - else: - await c.edit( - name=key, - overwrites={}, - reason=f'`/config channels` command issued by {ctx.author.display_name}' - ) - conf = yaml_load(configFile) - guildStr = str(ctx.guild.id) - if 'channels' not in conf[guildStr]: - conf[guildStr]['channels'] = {} - conf[guildStr]['channels'][key] = int(c.id) - yaml_dump(conf, configFile) - await ctx.send(f'```The `{key}` channel for the guild `{ctx.guild.name}` has been set to `{c.name}`.\n\nAll permission overrides for the channel have been reset. Remember to set the appropriate permissions for your guild.```\n{c.mention}',hidden=True) - - @cog_ext.cog_subcommand( - base='config', - # subcommand_group='notifications', - name='notifications', - description='Configure monitoring and notifications to Committee for member query channels.', - # base_description='Commands for configuring the various parameters of the Guild', - base_default_permission=False, - # base_permissions=permissions, - # subcommand_group_description='Configures whether the bot monitors and responds to posts in key channels.', - guild_ids=guild_ids, - options=[ - create_option( - name='channel', - description='Select which channel to change notifications for.', - option_type=3, - required=True, - choices=[ - create_choice( - name='Help Channel', - value='help' - ), - create_choice( - name='Signup Channel', - value='signup' - ) - ] - ), - create_option( - name='notifications', - description='Whether or not the bot monitors the channel for posts.', - option_type=5, - required=True - ) - ] - ) - async def _config_notifications(self, ctx:SlashContext, channel:str, notifications:bool): - conf = yaml_load(configFile) - guildStr = str(ctx.guild.id) - if 'notifications' not in conf[guildStr]: - conf[guildStr]['notifications'] = {} - conf[guildStr]['notifications'][channel] = notifications - yaml_dump(conf, configFile) - await ctx.send(f'```Notifications for posts in the `{channel}` channel for the guild `{ctx.guild.name}` have been set to `{notifications}`.```',hidden=True) - - @cog_ext.cog_subcommand( - base='config', - subcommand_group='timeslots', - name='add', - description='Add a timeslot at which the Guild will host games.', - # base_description='Commands for configuring the various parameters of the Guild', - base_default_permission=False, - # base_permissions=permissions, - subcommand_group_description='Manages timeslots available for games on the guild.', - guild_ids=guild_ids, - options=[ - create_option( - name='key', - description='Alphanumeric time code 10 chars max.', - option_type=3, - required=True, - ), - create_option( - name='name', - description='A longer, descriptive name of when the timeslot is', - option_type=3, - required=True - ) - ] - ) - async def _config_timeslots_add(self, ctx:SlashContext, key:str, name:str): - sanitisedKey = re.sub(r"\W+",'', key[:9].lower()) - if not key.isalnum(): - await ctx.send(f'```Key value {key} is not a valid alphanumeric time code. Sanitising to `{sanitisedKey}`.```',hidden=True) - conf = yaml_load(configFile) - guildStr = str(ctx.guild.id) - if 'timeslots' not in conf[guildStr]: - conf[guildStr]['timeslots'] = {} - if sanitisedKey in conf[guildStr]['timeslots']: - await ctx.send(f'```Key value {sanitisedKey} has already been defined for guild `{ctx.guild.name}` for `{conf[guildStr]["timeslots"][sanitisedKey]}`. Please use the `remove` or `modify` sub-commands to amend it.```',hidden=True) - return - conf[guildStr]['timeslots'][sanitisedKey] = name - yaml_dump(conf, configFile) - await ctx.send(f'```Timeslot `{name}` with the key `{sanitisedKey}` has been added for the guild `{ctx.guild.name}`.```',hidden=True) - if any([yaml_load(configFile)[x]['timeslots'] for x in yaml_load(configFile)]): - flag = False - if self.client.get_cog('Manipulate Timeslots') is None: - loadCog(f'./{cogsDir}/slashcommands/secondary/manipulate_timeslots.py') - flag = True - if any(['bot' in yaml_load(configFile)[x]['roles'] for x in yaml_load(configFile)]): - if self.client.get_cog('Game Create') is None: - loadCog(f'./{cogsDir}/slashcommands/secondary/game_create.py') - Flag = True - if yaml_load(lookupFile): - if any([x for x in yaml_load(lookupFile).values()]): - if self.client.get_cog('Game Management') is None: - loadCog(f'./{cogsDir}/slashcommands/secondary/game_management.py') - Flag = True - if self.client.get_cog('Player Commands') is None: - loadCog(f'./{cogsDir}/slashcommands/secondary/player_commands.py') - Flag = True - if self.client.get_cog('T-Card Command') is None: - loadCog(f'./{cogsDir}/slashcommands/secondary/tcard.py') - Flag = True - if self.client.get_cog('Pitch Command') is None: - loadCog(f'./{cogsDir}/slashcommands/secondary/pitch.py') - Flag = True - if flag: await self.client.slash.sync_all_commands() - - @cog_ext.cog_subcommand( - base='config', - subcommand_group='membership', - name='add', - description='Add a membership type for the Guild.', - # base_description='Commands for configuring the various parameters of the Guild', - base_default_permission=False, - # base_permissions=permissions, - subcommand_group_description='Manages the different categories of membership available to the Guild.', - guild_ids=guild_ids, - options=[ - create_option( - name='name', - description='Name of membership type.', - option_type=3, - required=True, - ), - create_option( - name='role_exists', - description='Does the role for this member type already exist?', - option_type=5, - required=True - ), - create_option( - name='role', - description='Assign the role if it already exists.', - option_type=8, - required=False - ) - ] - ) - async def _config_membership_add(self, ctx:SlashContext, name:str, role_exists:bool, role:discord.Role=None): - if role_exists and role is None: - await ctx.send(f'```If the role for membership type `{name}` already exists, you must assign it. If it does not exist, the Bot will create one.```') - return - if not role_exists and role is not None: - await ctx.send(f'```You have specified a role for `{name}` does not already exist but have also specified a role to assign. Please either assign a role if it exists, or leave it blank if does not.```',hidden=True) - return - conf = yaml_load(configFile) - guildStr = str(ctx.guild.id) - if 'membership' not in conf[guildStr]: - conf[guildStr]['membership'] = [] - if role is not None: - if role.id in conf[guildStr]['membership']: - await ctx.send(f'```The role {name} has already been assigned to a membership type for guild `{ctx.guild.name}`. Please use the `remove` sub-command to delete it or assign a different role.```',hidden=True) - return - if any([ctx.guild.get_role(m).name == name for m in conf[str(ctx.guild.id)]['membership']]): - await ctx.send(f'```The membership type {name} has already been assigned a role for guild `{ctx.guild.name}`. Please use the `remove` sub-command to delete the role or assign a different membership type.```',hidden=True) - return - if not role_exists: - r = await ctx.guild.create_role( - name=name, - permissions=discord.Permissions(read_messages=True,use_slash_commands=True), - mentionable=False, - reason=f'`/config membership add` command issued by {ctx.author.display_name}' - ) - if role is not None: - await role.edit( - name=name, - permissions=discord.Permissions(read_messages=True,use_slash_commands=True), - mentionable=False, - reason=f'`/config membership add` command issued by {ctx.author.display_name}' - ) - conf[guildStr]['membership'].append(role.id) if role is not None else conf[guildStr]['membership'].append(r.id) - yaml_dump(conf, configFile) - await ctx.send(f'```Membership type `{role.name if role is not None else r.name}` has been registered for the guild `{ctx.guild.name}`.```',hidden=True) - if any([yaml_load(configFile)[x]['membership'] for x in yaml_load(configFile)]): - if self.client.get_cog('Edit Membership') is None: - loadCog(f'./{cogsDir}/slashcommands/secondary/edit_membership.py') - await self.client.slash.sync_all_commands() - - @cog_ext.cog_subcommand( - base='config', - # subcommand_group='notifications', - name='restrict', - description='Toggle membership estriction for the guild.', - # base_description='Commands for configuring the various parameters of the Guild', - base_default_permission=False, - # base_permissions=permissions, - # subcommand_group_description='Configures whether the bot monitors and responds to posts in key channels.', - guild_ids=guild_ids, - options=[ - create_option( - name='value', - description='Enable membership restrictions for the guild?', - option_type=5, - required=True - ) - ] - ) - async def _restrict( - self, - ctx:SlashContext, - value:bool - ): - conf = yaml_load(configFile) - conf[str(ctx.guild.id)]['restrict'] = value - yaml_dump(conf, configFile) - await ctx.send(f'```Membership restrictions for the guild `{ctx.guild.name}` have been set to `{value}`.```',hidden=True) - -def setup(client): - client.add_cog(Configuration(client)) \ No newline at end of file diff --git a/app/cogs/slashcommands/secondary/edit_membership.py b/app/cogs/slashcommands/secondary/edit_membership.py deleted file mode 100644 index 798ba4a..0000000 --- a/app/cogs/slashcommands/secondary/edit_membership.py +++ /dev/null @@ -1,95 +0,0 @@ -import os # OS Locations -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option, create_permission # Slash Command features -from discord_slash.model import SlashCommandPermissionType -from discord_slash.client import SlashCommand - -from bot import configFile, yaml_load, yaml_dump, cogsDir, unloadCog - - #### Separate cog to remove and modify membership registrations that is reloaded if timeslots are added or removed - -class EditMembership(commands.Cog, name='Edit Membership'): - def __init__(self, client): - self.client = client - - #### Only emable for guilds with registered membership types - #### N.B.: if there are no guilds with any membership types, then this will throw an exception. - #### The solution I have implemented is that this will be classed as a 'secondary' cog: it will not be loaded by default, and will only be loaded if at least one guild has a membership role registered. - #### If the deletion of membership roles removes memberships from all guilds, it will unload the cog and delete the commands until a new membership role is defined. - guild_ids=[int(guildKey) for guildKey in yaml_load(configFile) if yaml_load(configFile)[guildKey]['membership']] - conf = yaml_load(configFile) - permissions = {} - for guildID in guild_ids: - permissions[guildID] = [] - permissions[guildID].append(create_permission(id=conf[str(guildID)]['owner'],id_type=SlashCommandPermissionType.USER,permission=True)) - for admin in conf[str(guildID)]['roles']['admin']: - permissions[guildID].append(create_permission(id=admin,id_type=SlashCommandPermissionType.ROLE,permission=True)) - - @cog_ext.cog_subcommand( - base='config', - subcommand_group='membership', - name='remove', - description='Remove a registered membership role.', - # base_description='Commands for configuring the various parameters of the Guild', - base_default_permission=False, - # base_permissions=permissions, - # subcommand_group_description='Adds a time slot available to the channel for games.', - guild_ids=guild_ids, - options=[ - create_option( - name='role', - description='The role of the membership type you want to delete.', - option_type=8, - required=True - ) - ] - ) - async def _config_membership_remove(self, ctx:SlashContext, role:discord.Role): - conf = yaml_load(configFile) - if 'membership' not in conf[str(ctx.guild.id)]: - conf[str(ctx.guild.id)]['timeslots'] = {} - if role.id in conf[str(ctx.guild.id)]['membership']: - conf[str(ctx.guild.id)]['membership'].remove(role.id) - yaml_dump(conf, configFile) - await ctx.send(f'```Membership type {role.name} has been deleted for the guild `{ctx.guild.name}`.```', hidden=True) - await role.delete(reason=f'`/config membership remove` command issued by `{ctx.author.display_name}`.') - if not any([x['membership'] for x in yaml_load(configFile).values()]): - unloadCog(f'./{cogsDir}/slashcommands/secondary/edit_membership.py') - await self.client.slash.sync_all_commands() - elif conf[str(ctx.guild.id)]['membership']: - output = f'Role `{role.name}` is not a registered membership role in the guild `{ctx.guild.name}`. Please select a valid membership role.\n\n Eligible roles are:\n' - for m in conf[str(ctx.guild.id)]['membership']: - output = ''.join([output, f'\n{ctx.guild.get_role(m).name}']) - await ctx.send(''.join(['```',output,'```']),hidden=True) - else: - await ctx.send(f'```No roles have been registered as membership types for the guild `{ctx.guild.name}`.```',hidden=True) - - @cog_ext.cog_subcommand( - base='config', - subcommand_group='membership', - name='list', - description='List the existing game memberships on the server.', - # base_description='Commands for configuring the various parameters of the Guild', - base_default_permission=False, - # base_permissions=permissions, - # subcommand_group_description='Adds a time slot available to the channel for games.', - guild_ids=guild_ids, - ) - async def _config_membership_list(self, ctx:SlashContext): - conf = yaml_load(configFile) - if 'membership' not in conf[str(ctx.guild.id)]: - conf[str(ctx.guild.id)]['membership'] = {} - if conf[str(ctx.guild.id)]['membership']: - output = f'The following membership types have been registered for the guild {ctx.guild.name}:\n' - for m in conf[str(ctx.guild.id)]['membership']: - output = ''.join([output, f'\n{ctx.guild.get_role(m).name}']) - await ctx.send(''.join(['```',output,'```']),hidden=True) - else: - await ctx.send(f'```No roles have been registered as membership types for the guild `{ctx.guild.name}`.```',hidden=True) - -def setup(client): - client.add_cog(EditMembership(client)) \ No newline at end of file diff --git a/app/cogs/slashcommands/secondary/game_create.py b/app/cogs/slashcommands/secondary/game_create.py deleted file mode 100644 index 351c8f7..0000000 --- a/app/cogs/slashcommands/secondary/game_create.py +++ /dev/null @@ -1,302 +0,0 @@ -import os # OS Locations -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option, create_permission # Slash Command features -from discord_slash.model import SlashCommandPermissionType -from discord_slash.client import SlashCommand -import typing -import re - -from bot import configFile, yaml_load, yaml_dump, cogsDir, unloadCog, dataFile, lookupFile, gmFile, loadCog, categoriesFile - -#### Game Role and Channel Setup Command - -class GameCreate(commands.Cog, name='Game Create'): - def __init__(self, client): - self.client = client - - conf=yaml_load(configFile) - permissions={} - guild_ids = list(set.intersection(set([int(guildKey) for guildKey in yaml_load(configFile) if yaml_load(configFile)[guildKey]['timeslots']]),set([int(guildKey) for guildKey in yaml_load(configFile) if 'bot' in yaml_load(configFile)[guildKey]['roles'] and type(yaml_load(configFile)[guildKey]['roles']['bot']) is int]))) - for guildID in guild_ids: - permissions[guildID] = [] - permissions[guildID].append(create_permission(id=conf[str(guildID)]['owner'],id_type=SlashCommandPermissionType.USER,permission=True)) - for admin in conf[str(guildID)]['roles']['admin']: permissions[guildID].append(create_permission(id=admin,id_type=SlashCommandPermissionType.ROLE,permission=True)) - permissions[guildID] = [] - permissions[guildID].append(create_permission(id=conf[str(guildID)]['owner'],id_type=SlashCommandPermissionType.USER,permission=True)) - for admin in conf[str(guildID)]['roles']['admin']: permissions[guildID].append(create_permission(id=admin,id_type=SlashCommandPermissionType.ROLE,permission=True)) - - @cog_ext.cog_subcommand( - base='game', - # subcommand_group='', - name='create', - description='Create a new game role and accompanying category, text, and voice channels.', - base_description='Commands for setting up and removing games on the Guild.', - base_default_permission=False, - base_permissions=permissions, - # subcommand_group_description='Adds a time slot available to the channel for games.', - guild_ids=guild_ids, - options=[ - create_option( - name='timeslot', - description='The timeslot code for when the game will run.', - option_type=3, - required=True - ), - create_option( - name='gm', - description='The person who will be running the game.', - option_type=6, - required=True - ), - create_option( - name='max_players', - description='The maximum number of players the game can take.', - option_type=4, - required=True - ), - create_option( - name='game_title', - description='What the game is called.', - option_type=3, - required=True - ), - create_option( - name='min_players', - description='The minimum number of players the game can take.', - option_type=4, - required=False - ), - create_option( - name='current_players', - description='The number of players currently in this game.', - option_type=4, - required=False - ), - create_option( - name='system', - description='What system the game is using.', - option_type=3, - required=False - ), - create_option( - name='platform', - description='What platform the game will be running on.', - option_type=3, - required=False - ) - ] - ) - async def _game_create( - self, - ctx:SlashContext, - timeslot:str, - gm:discord.Member, - max_players:int, - game_title:str, - min_players: typing.Optional[int]=None, - current_players: typing.Optional[int]=None, - system:typing.Optional[str]= None, - platform:typing.Optional[str]=None - ): - await ctx.channel.trigger_typing() - conf = yaml_load(configFile) - data = yaml_load(dataFile) - gms = yaml_load(gmFile) - lookup = yaml_load(lookupFile) - categories = yaml_load(categoriesFile) - guildStr = str(ctx.guild.id) - time = re.sub(r"\W+",'', timeslot[:9].lower()) - if 'roles' not in conf[guildStr]: - conf[guildStr]['roles'] = {} - if 'bot' not in conf[guildStr]['roles']: - await ctx.send(f'```Error: `Bot` role for guild `{ctx.guild.name}` has not been defined. Cannot configure game.```',hidden=True) - return - if 'timeslots' not in conf[guildStr]: - conf[guildStr]['timeslots'] = {} - if time not in conf[guildStr]['timeslots']: - await ctx.send(f'```Error: Time code `{timeslot}` is not recognised. Please enter a valid time code to register the game. use `/config timeslots list` to get a list of valid time codes.```',hidden=True) - return - if min_players and min_players > max_players: - await ctx.send(f'```Error: The minimum number of players cannot exceed the maximum number of players.```',hidden=True) - return - if current_players and current_players > max_players: - await ctx.send(f'```Error: The number of reserved spaces cannot exceed the maximum number of players.```',hidden=True) - return - if any(x is not None and x < 0 for x in [min_players, max_players, current_players]): - await ctx.send(f'```Error: You cannot enter negative integers for the number of players.```',hidden=True) - return - if guildStr not in lookup: - lookup[guildStr] = {} - if game_title in [x['game_title'] for x in lookup[str(ctx.guild.id)].values()] and time in [x['time'] for x in lookup[str(ctx.guild.id)].values()]: - await ctx.send(f'```Error: Game `{game_title}` has already been created for the time slot `{conf[guildStr]["timeslots"][time]}`. Please avoud duplicates, or use the `modify` sub-command to edit the existing game.```',hidden=True) - return - if guildStr not in data: data[guildStr] = {} - if time not in data[guildStr]: data[guildStr][time] = {} - rExists, cExists = False, False - r = discord.utils.get(ctx.guild.roles, name=f'{time.upper()}: {game_title}') - if not r: - r = await ctx.guild.create_role( - name=f'{time.upper()}: {game_title}', - reason=f'/game create command issued by `{ctx.author.display_name}`', - mentionable=True, - permissions=discord.Permissions.none(), - colour=discord.Colour.green() - ) - else: - rExists = True - await r.edit( - mentionable=True, - permissions=discord.Permissions.none(), - reason=f'/game create command issued by `{ctx.author.display_name}`', - colour=discord.Colour.green() - ) - if r not in gm.roles: - await gm.add_roles(r) - permissions = { - ctx.guild.default_role: discord.PermissionOverwrite(read_messages=False), - r: discord.PermissionOverwrite(read_messages=True), - ctx.guild.get_role(conf[guildStr]['roles']['bot']): discord.PermissionOverwrite(read_messages=True), - gm: discord.PermissionOverwrite( - read_messages=True, - manage_messages=True, - manage_channels=True, - manage_permissions=True, - priority_speaker=True, - move_members=True, - mute_members=True, - deafen_members=True - ) - } - c = discord.utils.get(ctx.guild.categories, name=f'{time.upper()}: {game_title}') - if not c: - c = await ctx.guild.create_category( - name=f'{time.upper()}: {game_title}', - overwrites=permissions, - reason=f'/game create command issued by `{ctx.author.display_name}`' - ) - await c.create_voice_channel( - name=f'voice: {game_title}', - topic=f'Default voice channel for the game `{game_title}`` taking place at `{conf[guildStr]["timeslots"][time]}`, with GM `{gm.display_name}`.', - reason=f'/game create command issued by `{ctx.author.display_name}`' - ) - t = await c.create_text_channel( - name=f'text: {game_title}', - topic=f'Default text channel for the game `{game_title}`` taking place at `{conf[guildStr]["timeslots"][time]}`, with GM `{gm.display_name}`.', - reason=f'/game create command issued by `{ctx.author.display_name}`' - ) - else: - cExists= True - await c.edit( - overwrites=permissions, - reason=f'/game create command issued by `{ctx.author.display_name}`', - ) - tPos = len(ctx.guild.channels) - t = None - v = False - for tc in c.text_channels: - if tc.position <= tPos: - t, tPos = tc, tc.position - await t.edit( - sync_permissions=True, - reason=f'/game create command issued by `{ctx.author.display_name}`' - ) - for vc in c.voice_channels: - await vc.edit( - sync_permissions=True, - reason=f'/game create command issued by `{ctx.author.display_name}`' - ) - v = True - if not t: - t = await c.create_text_channel( - name=f'text: {game_title}', - topic=f'Default text channel for the game `{game_title}`` taking place at `{conf[guildStr]["timeslots"][time]}`, with GM `{gm.display_name}`.', - reason=f'/game create command issued by `{ctx.author.display_name}`' - ) - else: - pins = await t.pins() - if pins: - hm = discord.utils.find(lambda x: x.content.startswith('```Hello ') and 'Your game channels for ' in x.content and x.author.id == self.client.user.id, pins) - if hm is not None: - await hm.delete() - if not v: - await c.create_voice_channel( - name=f'voice: {game_title}', - topic=f'Default voice channel for the game `{game_title}`` taking place at `{conf[guildStr]["timeslots"][time]}`, with GM `{gm.display_name}`.', - reason=f'/game create command issued by `{ctx.author.display_name}`' - ) - result = f'Game `{game_title}` has been created for timeslot `{conf[guildStr]["timeslots"][time]}`` with GM `{gm.display_name}` and space for {max_players} players (with {current_players if current_players else "0"} currently occupied).\n' - if rExists: - result = ''.join([result,f'There was already a role that matched the game, so that role has been reconfigured.\n\nNote: Editing this role will synchronise changes with the game channels, and deleting the role will delete the game and all its data.\n\n']) - else: - result = ''.join([result,f'A role for the game has been created.\n\nNote: Editing this role will synchronise changes with the game channels, and deleting the role will delete the game and all its data.\n\n']) - if cExists: - result = ''.join([result,f'There was already a channel category that matched the game, so it has been reconfigured with the appropriate permissions and text and voice channels.\n']) - else: - result = ''.join([result,f'A channel category with the appropriate text and voice channels has been created.\n']) - result = ''.join(['```',result,f'```\n{gm.mention} | {r.mention} | {t.mention}']) - output = f'```Hello {gm.display_name}! Your game channels for `{game_title}` have been created.\nYou can ping your players or edit the game settings by interacting with the game role through the Bot commands. Have fun!```\n' - output = ''.join([output,f'```Game Title: {game_title}\n']) - output = ''.join([output,f'GM: {gm.display_name}\n']) - output = ''.join([output,f'Time: {conf[guildStr]["timeslots"][time]}\n']) - output = ''.join([output,f'System: {system}\n'if system is not None else '']) - output = ''.join([output,f'Max Players: {max_players}\n']) - output = ''.join([output,f'Min Players: {min_players}\n'if min_players is not None else '']) - output = ''.join([output,f'Current Players: {current_players if current_players else "0"}\n']) - output = ''.join([output,f'Platform: {platform}```' if platform is not None else '```']) - output = ''.join([output,f'\n\n{gm.mention} | {r.mention}']) - await ctx.send(result,hidden=True) - o = await t.send(output) - await o.pin(reason=f'/game create command issued by `{ctx.author.display_name}`') - data[guildStr][time][str(r.id)] = { - 'game_title': game_title, - 'gm': gm.id, - 'max_players': max_players, - 'min_players': min_players, - 'current_players': current_players if current_players is not None else 0, - 'system': system, - 'platform': platform, - 'role': r.id, - 'category': c.id, - 'text_channel': t.id, - 'header_message': o.id - } - lookup[guildStr][str(r.id)] = { - 'category': c.id, - 'gm': gm.id, - 'time': time, - 'game_title': game_title, - 'text_channel': t.id - } - if guildStr not in gms: gms[guildStr] = {} - if str(gm.id) not in gms[guildStr]: gms[guildStr][str(gm.id)] = [] - if str(guildStr) not in categories: categories[guildStr] = {} - gms[guildStr][str(gm.id)].append(r.id) - if guildStr not in categories: categories[guildStr] = {} - categories[guildStr][str(c.id)] = r.id - yaml_dump(data,dataFile) - yaml_dump(lookup,lookupFile) - yaml_dump(gms,gmFile) - yaml_dump(categories,categoriesFile) - # Enable the Game Management and Player commands - if any([x for x in yaml_load(lookupFile).values()]): - flag = False - if self.client.get_cog('Game Management') is None: - loadCog(f'./{cogsDir}/slashcommands/secondary/game_management.py') - flag = True - if self.client.get_cog('Player Commands') is None: - loadCog(f'./{cogsDir}/slashcommands/secondary/player_commands.py') - flag = True - if self.client.get_cog('T-Card Command') is None: - loadCog(f'./{cogsDir}/slashcommands/secondary/tcard.py') - flag = True - if self.client.get_cog('Pitch Command') is None: - loadCog(f'./{cogsDir}/slashcommands/secondary/pitch.py') - flag = True - if flag: await self.client.slash.sync_all_commands() - -def setup(client): - client.add_cog(GameCreate(client)) \ No newline at end of file diff --git a/app/cogs/slashcommands/secondary/game_management.py b/app/cogs/slashcommands/secondary/game_management.py deleted file mode 100644 index e994377..0000000 --- a/app/cogs/slashcommands/secondary/game_management.py +++ /dev/null @@ -1,562 +0,0 @@ -import os # OS Locations -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option, create_permission # Slash Command features -from discord_slash.model import SlashCommandPermissionType, ButtonStyle -from discord_slash.client import SlashCommand -from discord_slash.utils.manage_components import create_select, create_select_option, create_actionrow, wait_for_component, create_button, create_actionrow - -import re - -from bot import configFile, yaml_load, yaml_dump, cogsDir, unloadCog, dataFile, lookupFile, gmFile, categoriesFile - -class GameManagement(commands.Cog, name='Game Management'): - def __init__(self, client): - self.client = client - - lookup = yaml_load(lookupFile) - guild_ids= [ int(x) for x in list(lookup)] - -### Move delete, Modify, and Reset commands to a separate secondary cog to enable when games exist? - @cog_ext.cog_subcommand( - base='game', - # subcommand_group='', - name='delete', - description='Deletes a game role and accompanying category, text, voice channels, and data.', - # base_description='Commands for setting up and removing games on the Guild.', - base_default_permission=False, - # base_permissions=permissions, - # subcommand_group_description='Adds a time slot available to the channel for games.', - guild_ids=guild_ids, - options=[ - create_option( - name='game_role', - description='The role representing the game you want to interact with.', - option_type=8, - required=True - ) - ] - ) - async def _game_delete(self, ctx:SlashContext, game_role:discord.Role): - await ctx.channel.trigger_typing() - conf = yaml_load(configFile) - data = yaml_load(dataFile) - gms = yaml_load(gmFile) - lookup = yaml_load(lookupFile) - categories = yaml_load(categoriesFile) - guildStr = str(ctx.guild.id) - rStr = str(game_role.id) - if 'bot' not in conf[guildStr]['roles']: - await ctx.send(f'```Error: `Bot` role for guild `{ctx.guild.name}` has not been defined. Cannot configure game.```',hidden=True) - return - if rStr not in lookup[guildStr]: - await ctx.send(f'```Error: This is not a valid game role. Please mention a role that is associated with a game.```', hidden=True) - return - if ctx.channel.category.id != lookup[guildStr][rStr]['category']: - await ctx.send(f'```Error: You must issue this command in a text channel associated with the game you are trying to delete.```', hidden=True) - return - game_title = lookup[guildStr][rStr]['game_title'] - time = lookup[guildStr][rStr]['time'] - c = ctx.guild.get_channel(lookup[guildStr][rStr]['category']) - gm = lookup[guildStr][rStr]['gm'] - channelsFound = False - del data[guildStr][time][rStr] - if c is not None: - channelsFound = True - for t in ctx.guild.text_channels: - if t.category == c: - await t.delete(reason=f'/game delete command issued by `{ctx.author.display_name}`') - for v in ctx.guild.voice_channels: - if v.category == c: - await v.delete(reason=f'/game delete command issued by `{ctx.author.display_name}`') - del categories[guildStr][str(c.id)] - await c.delete(reason=f'/game delete command issued by `{ctx.author.display_name}`') - lookup[guildStr].pop(rStr, None) - gm_m = await ctx.guild.fetch_member(gm) - output = f'The game `{game_title}` for timeslot `{conf[guildStr]["timeslots"][time]}` and with GM `{gm_m.display_name}` has been deleted.' - if channelsFound: - output = ''.join([output,' All associated text, voice, and category channels have been deleted.']) - else: - output = ''.join([output,' No associated text, voice, or category channels were found. Please delete them manually if they still persist.']) - if 'mod' in conf[guildStr]['channels'] and 'committee' in conf[guildStr]['roles']: - c = discord.utils.find(lambda x: x.id == conf[guildStr]['channels']['mod'], ctx.guild.channels) - await c.send( - content = f'```{output}```' - ) - await game_role.delete(reason=f'/game delete command issued by `{ctx.author.display_name}`') - gms[guildStr][str(gm)].remove(game_role.id) - if not gms[guildStr][str(gm)]: del gms[guildStr][str(gm)] - if not data[guildStr][time]: del data[guildStr][time] - yaml_dump(lookup, lookupFile) - yaml_dump(data, dataFile) - yaml_dump(gms, gmFile) - yaml_dump(categories, categoriesFile) - if not any([x for x in yaml_load(lookupFile).values()]): - unloadCog(f'./{cogsDir}/slashcommands/secondary/game_management.py') - if self.client.get_cog('Player Commands') is not None: unloadCog(f'./{cogsDir}/slashcommands/secondary/player_commands.py') - if self.client.get_cog('T-Card Command') is not None: unloadCog(f'./{cogsDir}/slashcommands/secondary/tcard.py') - if self.client.get_cog('Pitch Command') is not None: unloadCog(f'./{cogsDir}/slashcommands/secondary/pitch.py') - await self.client.slash.sync_all_commands() - - @cog_ext.cog_subcommand( - base='game', - # subcommand_group='', - name='modify', - description='Edit the information of an existing game channel.', - # base_description='Commands for setting up and removing games on the Guild.', - base_default_permission=False, - # base_permissions=permissions, - # subcommand_group_description='Adds a time slot available to the channel for games.', - guild_ids=guild_ids, - options=[ - create_option( - name='game_role', - description='The role of the game you are trying to edit.', - option_type=8, - required=True, - ), - create_option( - name='timeslot', - description='The new timeslot, if you are changing timeslots.', - option_type=3, - required=False - ), - create_option( - name='gm', - description='The new GM, if the GM is changing.', - option_type=6, - required=False - ), - create_option( - name='max_players', - description='The maximum number of players the game can take.', - option_type=4, - required=False - ), - create_option( - name='game_title', - description='The new title if the title is changing.', - option_type=3, - required=False - ), - create_option( - name='min_players', - description='The minimum number of players the gane can take.', - option_type=4, - required=False - ), - create_option( - name='current_players', - description='The number players currently in the game.', - option_type=4, - required=False - ), - create_option( - name='system', - description='What system the game is using.', - option_type=3, - required=False - ), - create_option( - name='platform', - description='What platform the game will be running on.', - option_type=3, - required=False - ) - ] - ) - async def _game_modify( - self, - ctx:SlashContext, - game_role:discord.Role, - timeslot:str=None, - gm:discord.User=None, - max_players:int=None, - game_title:str=None, - min_players:int=None, - current_players:int=None, - system:str=None, - platform:str=None - ): - await ctx.channel.trigger_typing() - if all(x is None for x in [timeslot, gm, max_players, game_title, min_players, current_players, system, platform]): - await ctx.send(f'```Error: No parameters have been entered to modify the game.```',hidden=True) - return - conf = yaml_load(configFile) - data = yaml_load(dataFile) - gms = yaml_load(gmFile) - lookup = yaml_load(lookupFile) - categories = yaml_load(categoriesFile) - guildStr = str(ctx.guild.id) - r = game_role - rStr = str(r.id) - old_time = lookup[guildStr][rStr]['time'] - time = re.sub(r"\W+",'', timeslot[:9].lower()) if timeslot else old_time - if guildStr not in lookup: - lookup[guildStr] = {} - if guildStr not in data: - data[guildStr] = {} - if time not in data[guildStr]: - data[guildStr][time] = {} - # Command Validation Checks - if rStr not in lookup[guildStr]: - await ctx.send(f'```Error: This is not a valid game role. Please mention a role that is associated with a game.```',hidden=True) - return - if timeslot is not None: - if time not in conf[guildStr]['timeslots']: - await ctx.send(f'```Error: Time code `{timeslot}` is not recognised. Please enter a valid time code to register the game. use `/config timeslots list` to get a list of valid time codes.```',hidden=True) - return - if any(x is not None and x < 0 for x in [min_players, max_players, current_players]): - await ctx.send(f'```Error: You cannot enter negative integers for the number of players.```',hidden=True) - return - if min_players and max_players and min_players > max_players: - await ctx.send(f'```Error: The minimum number of players cannot exceed the maximum number of players.```',hidden=True) - return - if current_players and max_players and current_players > max_players: - await ctx.send(f'```Error: The number of reserved spaces cannot exceed the maximum number of players.```',hidden=True) - return - - # Infer Old Data - old_data = data[guildStr][old_time][rStr].copy() - - result = f'The game {old_data["game_title"]} has been updated.\n' - - ## Change to the Title and/or Time Slot: - if time != old_time: - result = ''.join([result,f"The game's time slot has changed from {conf[guildStr]['timeslots'][time]} to {conf[guildStr]['timeslots'][time]}.\n"]) - del data[guildStr][old_time][rStr] - if not data[guildStr][old_time]: - del data[guildStr][old_time] - if game_title and game_title != old_data['game_title']: - if game_title in [x['game_title'] for x in lookup[str(ctx.guild.id)].values()] and time in [x['time'] for x in lookup[str(ctx.guild.id)].values()]: - await ctx.send(f'```Error: The target game `{game_title}` has already been created for the time slot `{conf[guildStr]["timeslots"][time]}`. Please avoud duplicates, or use the `modify` sub-command to edit the existing game.```',hidden=True) - return - result = ''.join([result,f"The game's title has been updated to {game_title}\n"]) - game_title = old_data['game_title'] if not game_title else game_title - if time != old_time or game_title != old_data['game_title']: - result = ''.join([result,f"The names of the game role and channel categories have been changed to match the updated {'timeslot' if time != old_time and game_title == old_data['game_title'] else 'game title' if game_title != old_data['game_title'] and time == old_time else 'time slot and game title'}.\n"]) - - # Update Role - await r.edit( - mentionable=True, - name=f'{time.upper()}: {game_title}', - permissions=discord.Permissions.none(), - reason=f'/game modify command issued by `{ctx.author.display_name}`', - colour=discord.Colour.green() - ) - - # Update GM - if gm and gm.id != old_data['gm']: - result = ''.join([result,f"The GM has been updated to {gm.display_name}.\n"]) - gms[guildStr][str(old_data['gm'])].remove(r.id) - if not gms[guildStr][str(old_data['gm'])]: - del gms[guildStr][str(old_data['gm'])] - gm = await ctx.guild.fetch_member(old_data['gm']) if not gm else gm - if r not in gm.roles: - await gm.add_roles(r) - - # Update Category - cExists = False - permissions = { - ctx.guild.default_role: discord.PermissionOverwrite(read_messages=False), - r: discord.PermissionOverwrite(read_messages=True), - ctx.guild.get_role(conf[guildStr]['roles']['bot']): discord.PermissionOverwrite(read_messages=True), - gm: discord.PermissionOverwrite( - read_messages=True, - manage_messages=True, - manage_channels=True, - manage_permissions=True, - priority_speaker=True, - move_members=True, - mute_members=True, - deafen_members=True - ) - } - c_id = lookup[guildStr][rStr]['category'] - c = discord.utils.get(ctx.guild.categories, id=c_id) - t_id = lookup[guildStr][rStr]['text_channel'] - t = discord.utils.get(ctx.guild.text_channels, id=t_id) - if not c: - c = await ctx.guild.create_category( - name=f'{time.upper()}: {game_title}', - overwrites=permissions, - reason=f'/game modify command issued by `{ctx.author.display_name}`' - ) - await c.create_voice_channel( - name=f'voice: {game_title}', - topic=f'Default voice channel for the game `{game_title}`` taking place at `{conf[guildStr]["timeslots"][time]}`, with GM `{gm.display_name}`.', - reason=f'/game modify command issued by `{ctx.author.display_name}`' - ) - t = await c.create_text_channel( - name=f'text: {game_title}', - topic=f'Default text channel for the game `{game_title}`` taking place at `{conf[guildStr]["timeslots"][time]}`, with GM `{gm.display_name}`.', - reason=f'/game modify command issued by `{ctx.author.display_name}`' - ) - else: - cExists= True - await c.edit( - name=f'{time.upper()}: {game_title}', - overwrites=permissions, - reason=f'/game modify command issued by `{ctx.author.display_name}`', - ) - tPos = len(ctx.guild.channels) - t = None - v = False - for tc in c.text_channels: - if tc.position <= tPos: - t, tPos = tc, tc.position - await t.edit( - sync_permissions=True, - reason=f'/game modify command issued by `{ctx.author.display_name}`' - ) - for vc in c.voice_channels: - await vc.edit( - sync_permissions=True, - reason=f'/game modify command issued by `{ctx.author.display_name}`' - ) - v = True - if not t: - t = await c.create_text_channel( - name=f'text: {game_title}', - topic=f'Default text channel for the game `{game_title}`` taking place at `{conf[guildStr]["timeslots"][time]}`, with GM `{gm.display_name}`.', - reason=f'/game modify command issued by `{ctx.author.display_name}`' - ) - else: - pins = await t.pins() - if pins: - hm = discord.utils.find(lambda x: x.content.startswith('```Hello ') and 'Your game channels for ' in x.content and x.author.id == self.client.user.id, pins) - if hm: - await hm.delete() - if not v: - await c.create_voice_channel( - name=f'voice: {game_title}', - topic=f'Default voice channel for the game `{game_title}`` taking place at `{conf[guildStr]["timeslots"][time]}`, with GM `{gm.display_name}`.', - reason=f'/game modify command issued by `{ctx.author.display_name}`' - ) - - # Determine remaining variables - max_players = old_data['max_players'] if not max_players else max_players - min_players = old_data['min_players'] if not min_players else min_players - current_players = old_data['current_players'] if not current_players else current_players - platform = old_data['platform'] if not platform else platform - system = old_data['system'] if not system else system - - result = ''.join(['```',result,f"The game has been configured with space for {max_players} players (with {current_players if current_players else '0'} currently occupied).",'```']) - - output = f'```Hello {gm.display_name}! Your game channels for `{game_title}` have been updated.\nYou can ping your players or edit the game settings by interacting with the game role through the Bot commands. Have fun!```\n' - output = ''.join([output,f'```Game Title: {game_title}\n']) - output = ''.join([output,f'GM: {gm.display_name}\n']) - output = ''.join([output,f'Time: {conf[guildStr]["timeslots"][time]}\n']) - output = ''.join([output,f'System: {system}\n'if system is not None else '']) - output = ''.join([output,f'Max Players: {max_players}\n']) - output = ''.join([output,f'Min Players: {min_players}\n'if min_players is not None else '']) - output = ''.join([output,f'Current Players: {current_players if current_players else "0"}\n']) - output = ''.join([output,f'Platform: {platform}```' if platform is not None else '```']) - output = ''.join([output,f'\n\n{gm.mention} | {r.mention}']) - await ctx.send(result,hidden=True) - o = await t.send(output) - await o.pin(reason=f'/game modify command issued by `{ctx.author.display_name}`') - data[guildStr][time][rStr] = { - 'game_title': game_title, - 'gm': gm.id, - 'max_players': max_players, - 'min_players': min_players, - 'current_players': current_players, - 'system': system, - 'platform': platform, - 'role': r.id, - 'category': c.id, - 'text_channel': t.id, - 'header_message': o.id - } - lookup[guildStr][rStr] = { - 'category': c.id, - 'gm': gm.id, - 'time': time, - 'game_title': game_title, - 'text_channel': t.id - } - if guildStr not in gms: gms[guildStr] = {} - if str(gm.id) not in gms[guildStr]: gms[guildStr][str(gm.id)] = [] - gms[guildStr][str(gm.id)].append(r.id) - if guildStr not in categories: categories[guildStr] = {} - categories[guildStr][str(c.id)] = r.id - yaml_dump(data,dataFile) - yaml_dump(lookup,lookupFile) - yaml_dump(gms,gmFile) - yaml_dump(categories, categoriesFile) - - @cog_ext.cog_subcommand( - base='game', - # subcommand_group='', - name='purge', - description='Delete all games in a given timeslot.', - # base_description='Commands for setting up and removing games on the Guild.', - base_default_permission=False, - # base_permissions=permissions, - # subcommand_group_description='Adds a time slot available to the channel for games.', - guild_ids=guild_ids, - ) - async def _game_purge( - self, - ctx:SlashContext - ): - await ctx.channel.trigger_typing() - conf = yaml_load(configFile) - data = yaml_load(dataFile) - lookup = yaml_load(lookupFile) - gms = yaml_load(gmFile) - categories = yaml_load(categoriesFile) - guildStr = str(ctx.guild.id) - - async def purgeGames(ctx:SlashContext, timeslot:str): - for g in list(data[guildStr][timeslot].values()): - c = discord.utils.find(lambda x: x.id == g['category'], ctx.guild.categories) - r = discord.utils.find(lambda x: x.id == g['role'], ctx.guild.roles) - for x in c.channels: - await x.delete(reason=f'/game purge command issued by `{ctx.author.display_name}`') - del categories[guildStr][str(c.id)] - await c.delete(reason=f'/game purge command issued by `{ctx.author.display_name}`') - await r.delete(reason=f'/game purge command issued by `{ctx.author.display_name}`') - gms[guildStr][str(g['gm'])].remove(r.id) - if not gms[guildStr][str(g['gm'])]: - del gms[guildStr][str(g['gm'])] - del lookup[guildStr][str(r.id)] - del data[guildStr][timeslot] - - if 'timeslots' not in conf[guildStr]: conf[guildStr]['timeslots'] = {} - tsDict = {k: conf[guildStr]['timeslots'][k] for k in data[guildStr] if data[guildStr][k]} - optionsList = [create_select_option(label=tsDict[x], value=x, description=x) for x in tsDict] - optionsList.insert(0, create_select_option(label='All Timeslots', value='--all', description='--all')) - try: - m = await ctx.send( - content='```Select which time slot for which you would like to purge all games.```', - delete_after=5, - components=[ - create_actionrow( - create_select( - placeholder='Time Slot', - options= optionsList, - min_values=1, - max_values=1 - ) - ) - ] - ) - while True: - select_ctx = await wait_for_component(self.client,messages=m, timeout=5) - if select_ctx.author != ctx.author: - await select_ctx.send(f'```Invalid response: you are not the person who issued the command.```', hidden=True) - else: - break - await m.delete() - [timeslot] = select_ctx.selected_options - except asyncio.TimeoutError: - await ctx.send(f'```Error: Command timed out.```', hidden=True) - return - if timeslot == '--all': - m = await ctx.send( - content=f'```You are attempting to purge games for all time slots. This will delete every game currently running for guild {ctx.guild.name}. Are you sure?```', - delete_after=5, - components=[ - create_actionrow( - create_button( - style=ButtonStyle.green, - label='Yes', - emoji='👍', - custom_id='purge_yes', - ), - create_button( - style=ButtonStyle.red, - label='No', - emoji='👎', - custom_id='purge_no', - ) - ) - ] - ) - while True: - button_ctx = await wait_for_component(self.client, messages=m, timeout=5) - if button_ctx.author != ctx.author: - await button_ctx.send(f'```Invalid response: you are not the person who issued the command.```', hidden=True) - else: - break - await m.delete() - if button_ctx.custom_id == 'purge_no': - await ctx.send(f'```The action `/game purge --all` has been aborted.```',hidden=True) - return - await ctx.channel.trigger_typing() - ctx_id = ctx.channel.id - for t in list(data[guildStr]): await purgeGames(ctx=ctx, timeslot=t) - if discord.utils.find(lambda x: x.id == ctx_id, ctx.guild.text_channels) is not None: - await ctx.send( - content = '```All games for all time slots have been purged.```', - hidden=True - ) - else: - if 'mod' in conf[guildStr]['channels'] and 'committee' in conf[guildStr]['roles']: - c = discord.utils.find(lambda x: x.id == conf[guildStr]['channels']['mod'], ctx.guild.channels) - await c.send( - content = '```All games for all time slots have been purged.```' - ) - else: - m = await ctx.send( - content=f'```You are attempting to purge games for `{conf[guildStr]["timeslots"][timeslot]}` for guild {ctx.guild.name}. Are you sure?```', - delete_after=5, - components=[ - create_actionrow( - create_button( - style=ButtonStyle.green, - label='Yes', - emoji='👍', - custom_id='purge_yes', - ), - create_button( - style=ButtonStyle.red, - label='No', - emoji='👎', - custom_id='purge_no', - ) - ) - ] - ) - while True: - button_ctx = await wait_for_component(self.client, messages=m, timeout=5) - if button_ctx.author != ctx.author: - await button_ctx.send(f'```Invalid response: you are not the person who issued the command.```', hidden=True) - else: - break - await m.delete() - if button_ctx.custom_id == 'purge_no': - await ctx.send(f'```The action `/game purge {timeslot}` has been aborted.```',hidden=True) - return - await ctx.channel.trigger_typing() - ctx_id = ctx.channel.id - await purgeGames(ctx=ctx, timeslot=timeslot) - if discord.utils.find(lambda x: x.id == ctx_id, ctx.guild.text_channels) is not None: - await ctx.send( - content = f'```All games for time slot `{conf[guildStr]["timeslots"][timeslot]}` have been purged.```', - hidden=True - ) - else: - if 'mod' in conf[guildStr]['channels'] and 'committee' in conf[guildStr]['roles']: - c = discord.utils.find(lambda x: x.id == conf[guildStr]['channels']['mod'], ctx.guild.channels) - await c.send( - content = f'```All games for time slot `{conf[guildStr]["timeslots"][timeslot]}` have been purged.```' - ) - yaml_dump(gms,gmFile) - yaml_dump(lookup,lookupFile) - yaml_dump(data,dataFile) - yaml_dump(categories,categoriesFile) - if not any([x for x in yaml_load(lookupFile).values()]): - unloadCog(f'./{cogsDir}/slashcommands/secondary/game_management.py') - if self.client.get_cog('Player Commands') is not None: unloadCog(f'./{cogsDir}/slashcommands/secondary/player_commands.py') - if self.client.get_cog('T-Card Command') is not None: unloadCog(f'./{cogsDir}/slashcommands/secondary/tcard.py') - if self.client.get_cog('Pitch Command') is not None: unloadCog(f'./{cogsDir}/slashcommands/secondary/pitch.py') - await self.client.slash.sync_all_commands() - -def setup(client): - client.add_cog(GameManagement(client)) \ No newline at end of file diff --git a/app/cogs/slashcommands/secondary/manipulate_timeslots.py b/app/cogs/slashcommands/secondary/manipulate_timeslots.py deleted file mode 100644 index f347a95..0000000 --- a/app/cogs/slashcommands/secondary/manipulate_timeslots.py +++ /dev/null @@ -1,170 +0,0 @@ -import os # OS Locations -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option, create_permission # Slash Command features -from discord_slash.model import SlashCommandPermissionType -from discord_slash.client import SlashCommand -from discord_slash.utils.manage_components import create_select, create_select_option, create_actionrow, wait_for_component -# from discord_components import * - -from bot import configFile, yaml_load, yaml_dump, reloadCog, cogsDir, unloadCog, dataFile - - #### Separate cog to remove and modify timeslots that is reloaded if timeslots are added or removed - -class ManipulateTimeslots(commands.Cog, name='Manipulate Timeslots'): - def __init__(self, client): - self.client = client - - #### Only emable for guilds with timeslots - #### N.B.: if there are no guilds with any timeslots, then this will throw an exception. - #### The solution I have implemented is that this will be classed as a 'secondary' cog: it will not be loaded by default, and will only be loaded if at least one guild has a timeslot configured. - #### If the deletion of timeslots removes timeslots from all guilds, it will unload the cog and delete the commands until a new timeslot is defined. - guild_ids=[int(guildKey) for guildKey in yaml_load(configFile) if yaml_load(configFile)[guildKey]['timeslots']] - conf = yaml_load(configFile) - permissions = {} - for guildID in guild_ids: - permissions[guildID] = [] - permissions[guildID].append(create_permission(id=conf[str(guildID)]['owner'],id_type=SlashCommandPermissionType.USER,permission=True)) - for admin in conf[str(guildID)]['roles']['admin']: - permissions[guildID].append(create_permission(id=admin,id_type=SlashCommandPermissionType.ROLE,permission=True)) - - @cog_ext.cog_subcommand( - base='config', - subcommand_group='timeslots', - name='remove', - description='Remove a configured game timeslot.', - # base_description='Commands for configuring the various parameters of the Guild', - base_default_permission=False, - # base_permissions=permissions, - # subcommand_group_description='Adds a time slot available to the channel for games.', - guild_ids=guild_ids, - # options=[ - # create_option( - # name='timeslot', - # description='The timeslot you wish to delete.', - # option_type=3, - # required=True - # ) - # ] - ) - async def _config_timeslots_remove(self, ctx:SlashContext,):# timeslot:str): - conf = yaml_load(configFile) - data = yaml_load(dataFile) - guildStr = str(ctx.guild.id) - if 'timeslots' not in conf[guildStr]: - conf[guildStr]['timeslots'] = {} - tsDict = conf[guildStr]['timeslots'].copy() - optionsList = [create_select_option(label=tsDict[x], value=x, description=x) for x in tsDict] - try: - m = await ctx.send( - content='```Select which time slot you would like to delete.```', - components=[ - create_actionrow( - create_select( - placeholder='Time Slot', - options= optionsList, - min_values=1, - max_values=1 - ) - ) - ], - delete_after=5, - # hidden=True Can't have hidden responses for menus apparently. - ) - while True: - select_ctx = await wait_for_component(self.client,messages=m, timeout=5) - if select_ctx.author != ctx.author: - await select_ctx.send(f'```Invalid response: you are not the person who issued the command.```', hidden=True) - else: - break - await m.delete() - [timeslot] = select_ctx.selected_options - except asyncio.TimeoutError: - await ctx.send(f'```Error: Command timed out.```', hidden=True) - return - if timeslot not in data[guildStr] or not data[guildStr][timeslot]: - await ctx.send(f'```Timeslot {conf[guildStr]["timeslots"][timeslot]} with the key `{timeslot}` has been deleted for the guild `{ctx.guild.name}`.```',hidden=True) - conf[guildStr]['timeslots'].pop(timeslot, None) - yaml_dump(conf, configFile) - if not any([x['timeslots'] for x in yaml_load(configFile).values()]): - unloadCog(f'./{cogsDir}/slashcommands/secondary/manipulate_timeslots.py') - if self.client.get_cog('Game Management') is not None: unloadCog(f'./{cogsDir}/slashcommands/secondary/game_management.py') - if self.client.get_cog('Game Create') is not None: unloadCog(f'./{cogsDir}/slashcommands/secondary/game_create.py') - if self.client.get_cog('Player Commands') is not None: unloadCog(f'./{cogsDir}/slashcommands/secondary/player_commands.py') - if self.client.get_cog('T-Card Command') is not None: unloadCog(f'./{cogsDir}/slashcommands/secondary/tcard.py') - if self.client.get_cog('Pitch Command') is not None: unloadCog(f'./{cogsDir}/slashcommands/secondary/pitch.py') - await self.client.slash.sync_all_commands() - else: - await ctx.send('```Error: You cannot delete a timeslot that has existing game entries. Please delete all games first.```',hidden=True) - - @cog_ext.cog_subcommand( - base='config', - subcommand_group='timeslots', - name='modify', - description='Modify the value of a configured gametime slot.', - # base_description='Commands for configuring the various parameters of the Guild', - base_default_permission=False, - # base_permissions=permissions, - # subcommand_group_description='Adds a time slot available to the channel for games.', - guild_ids=guild_ids, - options=[ - create_option( - name='key', - description='Key of timeslot being modified', - option_type=3, - required=True, - ), - create_option( - name='name', - description='New value for timeslot name', - option_type=3, - required=True - ) - ] - ) - async def _config_timeslots_modify(self, ctx:SlashContext, key:str, name:str): - conf = yaml_load(configFile) - guildStr = str(ctx.guild.id) - if 'timeslots' not in conf[guildStr]: - conf[guildStr]['timeslots'] = {} - if key in conf[guildStr]['timeslots']: - await ctx.send(f'```Timeslot {conf[guildStr]["timeslots"][key]} with the key `{key}` has been renamed to {name} for the guild `{ctx.guild.name}`.```',hidden=True) - conf[guildStr]['timeslots'][key] = name - yaml_dump(conf, configFile) - elif conf[guildStr]['timeslots']: - output = f'```Timeslot `{key}` was not found in the guild `{ctx.guild.name}`. Please enter a valid key.\n\n Available timeslots are:\n(key): (timeslot name)' - for c in conf[guildStr]['timeslots']: - output = ''.join([output, f'\n {c}: {conf[guildStr]["timeslots"][c]}']) - await ctx.send(''.join([output,'```']),hidden=True) - else: - await ctx.send(f'```No timeslots have been defined for the guild `{ctx.guild.name}`.```',hidden=True) - - @cog_ext.cog_subcommand( - base='config', - subcommand_group='timeslots', - name='list', - description='List the existing game timeslots on the server.', - # base_description='Commands for configuring the various parameters of the Guild', - base_default_permission=False, - # base_permissions=permissions, - # subcommand_group_description='Adds a time slot available to the channel for games.', - guild_ids=guild_ids, - ) - async def _config_timeslots_list(self, ctx:SlashContext): - conf = yaml_load(configFile) - guildStr = str(ctx.guild.id) - if 'timeslots' not in conf[guildStr]: - conf[guildStr]['timeslots'] = {} - if conf[guildStr]['timeslots']: - output = f'```The following timeslots have been configured for the guild {ctx.guild.name}:\n(key): (timeslot name)' - for c in conf[guildStr]['timeslots']: - output = ''.join([output, f'\n {c}: {conf[guildStr]["timeslots"][c]}']) - await ctx.send(''.join([output,'```'])) - else: - await ctx.send(f'```No timeslots have been defined for the guild `{ctx.guild.name}`.```',hidden=True) - -def setup(client): - client.add_cog(ManipulateTimeslots(client)) \ No newline at end of file diff --git a/app/cogs/slashcommands/secondary/pitch.py b/app/cogs/slashcommands/secondary/pitch.py deleted file mode 100644 index d2674af..0000000 --- a/app/cogs/slashcommands/secondary/pitch.py +++ /dev/null @@ -1,186 +0,0 @@ -import os # OS Locations -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option, create_permission # Slash Command features -from discord_slash.model import SlashCommandPermissionType, ButtonStyle -from discord_slash.client import SlashCommand -from discord_slash.utils.manage_components import create_select, create_select_option, create_actionrow, wait_for_component, create_button, create_actionrow - -from bot import configFile, yaml_load, yaml_dump, cogsDir, unloadCog, dataFile, lookupFile, gmFile, categoriesFile, pitchesFile, loadCog - -#### Pitch Command - -class Pitch(commands.Cog, name='Pitch Command'): - def __init__(self, client): - self.client = client - - conf=yaml_load(configFile) - permissions={} - guild_ids = list(set.intersection(set([int(guildKey) for guildKey in yaml_load(configFile) if yaml_load(configFile)[guildKey]['timeslots']]),set([int(guildKey) for guildKey in yaml_load(configFile) if 'bot' in yaml_load(configFile)[guildKey]['roles'] and type(yaml_load(configFile)[guildKey]['roles']['bot']) is int]))) - for guildID in guild_ids: - permissions[guildID] = [] - permissions[guildID].append(create_permission(id=conf[str(guildID)]['owner'],id_type=SlashCommandPermissionType.USER,permission=True)) - for admin in conf[str(guildID)]['roles']['admin']: permissions[guildID].append(create_permission(id=admin,id_type=SlashCommandPermissionType.ROLE,permission=True)) - permissions[guildID] = [] - permissions[guildID].append(create_permission(id=conf[str(guildID)]['owner'],id_type=SlashCommandPermissionType.USER,permission=True)) - for admin in conf[str(guildID)]['roles']['admin']: permissions[guildID].append(create_permission(id=admin,id_type=SlashCommandPermissionType.ROLE,permission=True)) - - @cog_ext.cog_slash( - name='pitch', - description='Initialises the menu for game pitches.', - default_permission=False, - permissions=permissions, - guild_ids=guild_ids, - ) - async def _pitch(self, ctx:SlashContext): - await ctx.channel.trigger_typing() - conf = yaml_load(configFile) - data = yaml_load(dataFile) - lookup = yaml_load(lookupFile) - gms = yaml_load(gmFile) - categories = yaml_load(categoriesFile) - guildStr = str(ctx.guild.id) - pitches = yaml_load(pitchesFile) - if guildStr not in pitches: pitches[guildStr] = {} - if pitches[guildStr]: - await ctx.send(f'```Error: pitches are already running for the guild `{ctx.guild.name}`. Please close the existing pitches first before issuing this command.```') - return - if 'timeslots' not in conf[guildStr]: conf[guildStr]['timeslots'] = {} - tsDict = {k: conf[guildStr]['timeslots'][k] for k in data[guildStr] if data[guildStr][k]} - optionsList = [create_select_option(label=tsDict[x], value=x, description=x) for x in tsDict] - try: - m = await ctx.send( - content='```Select which time slot for which you would like to run pitches for.```', - delete_after=5, - components=[ - create_actionrow( - create_select( - placeholder='Time Slot', - options= optionsList, - min_values=1, - max_values=1 - ) - ) - ] - ) - while True: - select_ctx = await wait_for_component(self.client,messages=m, timeout=5) - if select_ctx.author != ctx.author: - await select_ctx.send(f'```Invalid response: you are not the person who issued the command.```', hidden=True) - else: - break - await m.delete() - [timeslot] = select_ctx.selected_options - except asyncio.TimeoutError: - await ctx.send(f'```Error: Command timed out.```', hidden=True) - return - await ctx.channel.trigger_typing() - p = discord.PermissionOverwrite() - p.read_messages = False - p.send_messages = False - await ctx.channel.edit( - reason=f'/pitch command issued by {ctx.author.display_name}', - overwrites = { - ctx.guild.default_role: p - } - ) - if timeslot not in pitches[guildStr]: pitches[guildStr][timeslot] = {} - pitches[guildStr][timeslot]['indices'] = {} - pitches[guildStr][timeslot]['entries'] = [x for x in data[guildStr][timeslot].values()] - pitches[guildStr][timeslot]['entries'].sort(key= lambda x: x['game_title']) - header_message = await ctx.channel.send( - content=f'**Game listing for {conf[guildStr]["timeslots"][timeslot]}**\n_ _```The following are the games that are being pitched. Please select which game you would like to join by clicking on the `Join` button below.```' - ) - pitches[guildStr][timeslot]['header_message'] = header_message.id - pitches[guildStr][timeslot]['messages'] = [] - pitches[guildStr][timeslot]['roles'] = {} - for index, element in enumerate(pitches[guildStr][timeslot]['entries']): - gm = await self.client.fetch_user(element["gm"]) - o = f'_ _\n***{element["game_title"]}*** (GM: {gm.mention})\n```\n' - if element['system'] is not None: o = ''.join([o,f'System: {element["system"]}\n']) - if element['min_players'] is not None: o = ''.join([o,f'Minimum Players: {str(element["min_players"])} ']) - if element['max_players'] is not None: o = ''.join([o,f'Maximum Players: {str(element["max_players"])}\n']) - if element['platform'] is not None: o = ''.join([o,f'Platform: {element["platform"]}\n']) - o = ''.join([o,f'```']) - spaces_remaining = element["max_players"] - element["current_players"] - o = ''.join([o,f'~~Spaces Remaining: {str(0)}~~'])if spaces_remaining <= 0 else ''.join([o,f'Spaces Remaining: {str(spaces_remaining)}']) - m = await ctx.channel.send( - content=o, - components=[ - create_actionrow( - create_button( - style=ButtonStyle.green, - label='Join', - emoji='🉑', - custom_id=f'join_{index}' - ), - create_button( - style=ButtonStyle.red, - label='Leave', - emoji='🈳', - custom_id=f'leave_{index}' - ) - ) - ] - ) - pitches[guildStr][timeslot]['messages'].append(m.id) - r = discord.utils.find(lambda x: x.id == element['role'],ctx.guild.roles) - pitches[guildStr][timeslot]['roles'][index] = r.id - pitches[guildStr][timeslot]['indices'][r.id] = index - newcomer = returning_player = None - if 'newcomer' in conf[guildStr]['roles']: newcomer = discord.utils.find(lambda x: x.id == conf[guildStr]['roles']['newcomer'], ctx.guild.roles) - if 'returning_player' in conf[guildStr]['roles']: returning_player = discord.utils.find(lambda x: x.id == conf[guildStr]['roles']['returning_player'], ctx.guild.roles) - buttons = [] - if returning_player is not None: - buttons.append( - create_button( - style= ButtonStyle.grey, - label= 'Allow Returning Players', - emoji= '🔁', - custom_id='allow_returning' - ) - ) - if newcomer is not None: - buttons.append( - create_button( - style= ButtonStyle.grey, - label= 'Allow Newcomers', - emoji= '🆕', - custom_id='allow_newcomers' - ) - ) - buttons.append( - create_button( - style= ButtonStyle.green, - label= 'Allow All', - emoji='🚪', - custom_id='allow_all' - ) - ) - buttons.append( - create_button( - style= ButtonStyle.red, - label= 'Close Pitches', - emoji='🔒', - custom_id='close_pitches' - ) - ) - control = await ctx.channel.send( - content='_ _\n```Control Panel:\nFor Admin Use Only```', - components=[ - create_actionrow( - *buttons - ) - ] - ) - pitches[guildStr][timeslot]['control'] = control.id - yaml_dump(pitches,pitchesFile) - if self.client.get_cog('Pitch Listener') is None: - loadCog(f'./{cogsDir}/events/secondary/pitch_listener.py') - #### Activate global pitch listener - -def setup(client): - client.add_cog(Pitch(client)) \ No newline at end of file diff --git a/app/cogs/slashcommands/secondary/player_commands.py b/app/cogs/slashcommands/secondary/player_commands.py deleted file mode 100644 index 943489d..0000000 --- a/app/cogs/slashcommands/secondary/player_commands.py +++ /dev/null @@ -1,239 +0,0 @@ -import os # OS Locations -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option, create_permission # Slash Command features -from discord_slash.model import SlashCommandPermissionType - -from bot import configFile, yaml_load, yaml_dump, lookupFile, dataFile, gmFile, categoriesFile - -##### Player Add, Remove, and Leave Commands - -class PlayerCommands(commands.Cog, name='Player Commands'): - def __init__(self, client): - self.client = client - - conf = yaml_load(configFile) - lookup = yaml_load(lookupFile) - data = yaml_load(dataFile) - gms = yaml_load(gmFile) - categories = yaml_load(categoriesFile) - guild_ids= [ int(x) for x in list(lookup)] - - @cog_ext.cog_subcommand( - base='player', - name='add', - description='Add a player to a game.', - base_description='Commands to manage players in a game.', - base_default_permission=True, - guild_ids = guild_ids, - options = [ - create_option( - name='player', - description='The player you want to add to the game.', - option_type=6, - required=True - ), - create_option( - name='game', - description='The role of the game you want to add the player to.', - option_type=8, - required=True - ) - ] - ) - async def _player_add( - self, - ctx:SlashContext, - player:discord.User, - game:discord.Role - ): - await ctx.channel.trigger_typing() - conf = yaml_load(configFile) - lookup = yaml_load(lookupFile) - data = yaml_load(dataFile) - gms = yaml_load(gmFile) - guildStr = str(ctx.guild.id) - rStr = str(game.id) - if rStr not in lookup[guildStr]: - await ctx.send(f'```Error: This is not a valid game role. Please mention a role that is associated with a game.```',hidden=True) - return - if not (set(ctx.author.roles) & set([ctx.guild.get_role(x) for x in conf[str(ctx.guild.id)]['roles']['admin']]) or ctx.author == ctx.guild.owner): - if ctx.author.id != lookup[guildStr][rStr]['gm']: - await ctx.send(f'```Error: You are not authorised to issue this command. A player may only be added to a game by the GM or by an administrator.```',hidden=True) - return - if game in player.roles: - await ctx.send(f'```Error: Player `{player.display_name}` is already in the game {lookup[guildStr][rStr]["game_title"]}.```',hidden=True) - return - await player.add_roles(game, reason=f'`/player add` command issued by {ctx.author.display_name}`.') - t = lookup[guildStr][rStr]['time'] - if type(data[guildStr][t][rStr]['current_players']) is not int: data[guildStr][t][rStr]['current_players'] = 1 - else: data[guildStr][t][rStr]['current_players'] += 1 - hm = data[guildStr][t][rStr]['header_message'] - tc = discord.utils.find(lambda x: x.id == lookup[guildStr][rStr]['text_channel'],ctx.guild.channels) - if tc is not None: - p = await tc.pins() - if p: - header = discord.utils.find(lambda x: x.id == hm, p) - if header is not None: - text = header.content.split('\n') - for line, item in enumerate(text): - if 'Current Players: ' in item: - text[line] = f'Current Players: {str(data[guildStr][t][rStr]["current_players"])}' - break - await header.edit(content='\n'.join(text)) - else: - tPos = len(ctx.guild.channels) - cat = discord.utils.find(lambda x: x.id==lookup[guildStr][rStr]['category'], ctx.guild.categories) - if cat is not None: - for t in cat.text_channels: - if t.position <= tPos: - tc = t - tPos = t.position - await tc.send(f'```Player {player.display_name} has been added to the game by `{ctx.author.display_name}`.```\n{player.mention} | {game.mention}') - if 'mod' in conf[guildStr]['channels'] and 'committee' in conf[guildStr]['roles']: - c = discord.utils.find(lambda x: x.id == conf[guildStr]['channels']['mod'], ctx.guild.channels) - r = discord.utils.find(lambda x: x.id == conf[guildStr]['roles']['committee'], ctx.guild.roles) - await c.send(f'```Player `{player.display_name}` has been added to the game `{lookup[guildStr][rStr]["game_title"]}` by `{ctx.author.display_name}` via the `/player add` command.```') - yaml_dump(data,dataFile) - await ctx.send(content=f'```Player `{player.display_name}` has been added to the game `{lookup[guildStr][rStr]["game_title"]}`.```', hidden=True) - - @cog_ext.cog_subcommand( - base='player', - name='remove', - description='Remove a player from a game.', - # base_description='Commands to manage players in a game.', - base_default_permission=True, - guild_ids = guild_ids, - options = [ - create_option( - name='player', - description='The player you want to remove from the game.', - option_type=6, - required=True - ) - ] - ) - async def _player_remove( - self, - ctx:SlashContext, - player:discord.User - ): - await ctx.channel.trigger_typing() - conf = yaml_load(configFile) - lookup = yaml_load(lookupFile) - data = yaml_load(dataFile) - gms = yaml_load(gmFile) - categories = yaml_load(categoriesFile) - guildStr = str(ctx.guild.id) - if str(ctx.channel.category.id) not in categories[guildStr]: - await ctx.send(f'```Error: This command can only be issued in a text channel associated with a game.```', hidden=True) - return - game = discord.utils.find(lambda x: x.id == categories[guildStr][str(ctx.channel.category.id)], ctx.guild.roles) - rStr = str(game.id) - if not (set(ctx.author.roles) & set([ctx.guild.get_role(x) for x in conf[str(ctx.guild.id)]['roles']['admin']]) or ctx.author == ctx.guild.owner): - if ctx.author.id != lookup[guildStr][rStr]['gm']: - await ctx.send(f'```Error: You are not authorised to issue this command. A player may only be added to a game by the GM or by an administrator.```',hidden=True) - return - if game not in player.roles: - await ctx.send(f'```Error: Player `{player.display_name}` is not in the game {lookup[guildStr][rStr]["game_title"]}.```',hidden=True) - return - await player.remove_roles(game, reason=f'`/player remove` command issued by {ctx.author.display_name}`.') - t = lookup[guildStr][rStr]['time'] - if data[guildStr][t][rStr]['current_players'] <= 1: data[guildStr][t][rStr]['current_players'] = 0 - else: data[guildStr][t][rStr]['current_players'] -= 1 - hm = data[guildStr][t][rStr]['header_message'] - tc = discord.utils.find(lambda x: x.id == lookup[guildStr][rStr]['text_channel'],ctx.guild.channels) - if tc is not None: - p = await tc.pins() - if p is not None: - header = discord.utils.find(lambda x: x.id == hm, p) - if header is not None: - text = header.content.split('\n') - for line, item in enumerate(text): - if 'Current Players: ' in item: - text[line] = f'Current Players: {str(data[guildStr][t][rStr]["current_players"]) if data[guildStr][t][rStr]["current_players"] is not None else str(0)}' - break - await header.edit(content='\n'.join(text)) - else: - tPos = len(ctx.guild.channels) - cat = ctx.channel.category - for t in cat.text_channels: - if t.position <= tPos: - tc = t - tPos = t.position - await tc.send(f'```Player {player.display_name} has been removed from the game by `{ctx.author.display_name}`.```\n{game.mention}') - if 'mod' in conf[guildStr]['channels'] and 'committee' in conf[guildStr]['roles']: - c = discord.utils.find(lambda x: x.id == conf[guildStr]['channels']['mod'], ctx.guild.channels) - r = discord.utils.find(lambda x: x.id == conf[guildStr]['roles']['committee'], ctx.guild.roles) - await c.send(f'```Player `{player.display_name}` has been removed from the game `{lookup[guildStr][rStr]["game_title"]}` by `{ctx.author.display_name}` via the `/player remove` command.```') - yaml_dump(data,dataFile) - await ctx.send(content=f'```Player `{player.display_name}` has been removed from the game `{lookup[guildStr][rStr]["game_title"]}`.```', hidden=True) - - @cog_ext.cog_subcommand( - base='player', - name='leave', - description='Leave a game.', - # base_description='Commands to manage players in a game.', - base_default_permission=True, - guild_ids = guild_ids - ) - async def _player_leave( - self, - ctx:SlashContext - ): - await ctx.channel.trigger_typing() - conf = yaml_load(configFile) - lookup = yaml_load(lookupFile) - data = yaml_load(dataFile) - gms = yaml_load(gmFile) - categories = yaml_load(categoriesFile) - guildStr = str(ctx.guild.id) - player = ctx.author - if str(ctx.channel.category.id) not in categories[guildStr]: - await ctx.send(f'```Error: This command can only be issued in a text channel associated with the game you are trying to leave.```', hidden=True) - return - game = discord.utils.find(lambda x: x.id == categories[guildStr][str(ctx.channel.category.id)], ctx.guild.roles) - rStr = str(game.id) - if game not in player.roles: - await ctx.send(f'```Error: You are not in the game {lookup[guildStr][rStr]["game_title"]}.```',hidden=True) - return - if player.id == lookup[guildStr][rStr]['gm']: - await ctx.send(f'```Error: You are the GM of the game {lookup[guildStr][rStr]["game_title"]} and cannot leave until a new GM is assigned.```',hidden=True) - return - await player.remove_roles(game, reason=f'`/player leave` command issued by {ctx.author.display_name}`.') - t = lookup[guildStr][rStr]['time'] - if data[guildStr][t][rStr]['current_players'] <= 1: data[guildStr][t][rStr]['current_players'] = None - else: data[guildStr][t][rStr]['current_players'] -= 1 - hm = data[guildStr][t][rStr]['header_message'] - tc = discord.utils.find(lambda x: x.id == lookup[guildStr][rStr]['text_channel'],ctx.guild.channels) - if tc is not None: - p = await tc.pins() - if p is not None: - header = discord.utils.find(lambda x: x.id == hm, p) - if header is not None: - text = header.content.split('\n') - for line, item in enumerate(text): - if 'Current Players: ' in item: - text[line] = f'Current Players: {str(data[guildStr][t][rStr]["current_players"]) if data[guildStr][t][rStr]["current_players"] is not None else str(0)}' - break - await header.edit(content='\n'.join(text)) - else: - tPos = len(ctx.guild.channels) - cat = ctx.channel.category - for t in cat.text_channels: - if t.position <= tPos: - tc = t - tPos = t.position - await tc.send(f'```Player `{player.display_name}` has left the game.```\n{game.mention}') - if 'mod' in conf[guildStr]['channels'] and 'committee' in conf[guildStr]['roles']: - c = discord.utils.find(lambda x: x.id == conf[guildStr]['channels']['mod'], ctx.guild.channels) - r = discord.utils.find(lambda x: x.id == conf[guildStr]['roles']['committee'], ctx.guild.roles) - await c.send(f'```Player `{player.display_name}` has left the game `{lookup[guildStr][rStr]["game_title"]}` via the `/player leave` command.```') - yaml_dump(data,dataFile) - await ctx.send(content=f'```You have left the game `{lookup[guildStr][rStr]["game_title"]}`.```', hidden=True) - -def setup(client): - client.add_cog(PlayerCommands(client)) \ No newline at end of file diff --git a/app/cogs/slashcommands/secondary/tcard.py b/app/cogs/slashcommands/secondary/tcard.py deleted file mode 100644 index 2d156af..0000000 --- a/app/cogs/slashcommands/secondary/tcard.py +++ /dev/null @@ -1,83 +0,0 @@ -import os # OS Locations -import yaml # YAML parser for Bot config files -import asyncio # Discord Py Dependency -import discord # Main Lib -from datetime import datetime -import time -from discord.ext import commands # Commands module -from discord_slash import SlashCommand, SlashContext, cog_ext, utils # Slash Command Library -from discord_slash.utils.manage_commands import create_choice, create_option, create_permission # Slash Command features -from discord_slash.model import SlashCommandPermissionType - -from bot import configFile, yaml_load, yaml_dump, lookupFile, dataFile, gmFile, categoriesFile - -#### T Card Command - -class TCardCommand(commands.Cog, name='T-Card Command'): - def __init__(self, client): - self.client = client - - conf = yaml_load(configFile) - lookup = yaml_load(lookupFile) - data = yaml_load(dataFile) - gms = yaml_load(gmFile) - categories = yaml_load(categoriesFile) - guild_ids= [ int(x) for x in list(lookup)] - - @cog_ext.cog_slash( - name='tcard', - description='Invokes a T-Card in the current game.', - default_permission=True, - guild_ids=guild_ids, - ) - async def _tcard(self, ctx:SlashContext): - conf = yaml_load(configFile) - lookup = yaml_load(lookupFile) - data = yaml_load(dataFile) - gms = yaml_load(gmFile) - categories = yaml_load(categoriesFile) - guildStr = str(ctx.guild.id) - embed = discord.Embed( - title='T-Card', - description='A T-Card Has Been Played', - colour=discord.Color.dark_red(), - ) - embed.set_footer(text=datetime.now().strftime('%a %-d %b %y, %-I:%M %p')) - embed.set_image(url='http://geas.org.uk/wp-content/uploads/2020/08/tcard-1-e1597167776966.png') - - """If this was called in a game channel""" - if str(ctx.channel.category.id) in categories[guildStr]: - - """Send a T-Card graphic to the channel, tagging the role.""" - role = ctx.guild.get_role(categories[guildStr][str(ctx.channel.category.id)]) - await ctx.channel.send(f'{role.mention}', embed=embed) - - if ctx.author_id == lookup[guildStr][str(role.id)]["gm"]: - - """Behaviour for when the GM issues T-Card command.""" - await ctx.send(content=f'```You have invoked the T-Card in the game {lookup[guildStr][str(role.id)]["game_title"]} as the GM.```', hidden=True) - else: - """Default behaviour for when someone who is not the GM issues the command.""" - - """Privately message the GM.""" - gm = await ctx.guild.fetch_member(lookup[guildStr][str(role.id)]["gm"]) - await gm.send(f'**Important**\n```Player {ctx.author.display_name} has invoked a T-Card in your game {lookup[guildStr][str(role.id)]["game_title"]}. Please check in with them and make sure everything is okay. If you need any further help, please feel free to contact a member of the Committee.```') - - """Notify the issuer of the command privately via hidden reply.""" - await ctx.send(content=f'```You have invoked the T-Card in the game {lookup[guildStr][str(role.id)]["game_title"]}. The GM has been notified privately.```', hidden=True) - - """Do the audio thing.""" - opus = discord.opus.load_opus('/usr/lib/x86_64-linux-gnu/libopus.so.0') - for vc in ctx.channel.category.voice_channels: - v = await vc.connect() - tcardaudio = discord.PCMAudio(open("./assets/tcard.wav", "rb")) - v.play(tcardaudio) - while v.is_playing(): time.sleep(.1) - await v.disconnect() - else: - """Send a T-Card to the immediate channel if this is a generic channel.""" - await ctx.channel.send(embed=embed) - await ctx.send(content=f'```You have invoked the T-Card in the channel {ctx.channel.name}.```', hidden=True) - -def setup(client): - client.add_cog(TCardCommand(client)) \ No newline at end of file diff --git a/app/data/.gitkeep b/app/data/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/app/data/config_blueprint.yml b/app/data/config_blueprint.yml deleted file mode 100644 index 6ed75bc..0000000 --- a/app/data/config_blueprint.yml +++ /dev/null @@ -1,30 +0,0 @@ -guild_id_string: - channels: # Dictionary - # help is an optional feature so not necessary in blueprint. - mod: 0 - signup: 0 - configured: false - membership: [0] # List of integers - # For membership, at least one kind needs to be defined. But no key is mandatory. - name: string - owner: 0 - prefix: string - roles: # dictionary - admin: - - 0 # List - # For admins, at least one needs to be defined. - # committee notifications is optional so is not necessary in blueprint. - bot: 0 - # newcomer role is optional - # returning player role is optional - # student role is optional - timeslots: {} # Dictionary - # At least one needs to be defined. - meta: - strict: - - channels - - roles - notifications: - help: true - signup: true - initialised: true diff --git a/app/requirements.txt b/app/requirements.txt deleted file mode 100644 index 678e117..0000000 --- a/app/requirements.txt +++ /dev/null @@ -1,26 +0,0 @@ -aiohttp==3.7.4.post0 -async-timeout==3.0.1 -asyncio==3.4.3 -attrs==21.2.0 -cffi==1.14.6 -chardet==4.0.0 -DateTime==4.3 -deepdiff==5.5.0 -discord==1.7.3 -discord-py-slash-command==2.4.0 -discord.py==1.7.3 -idna==3.2 -multidict==5.1.0 -ordered-set==4.0.2 -packaging==21.0 -pycparser==2.20 -PyNaCl==1.4.0 -pyparsing==2.4.7 -python-dotenv==0.19.0 -pytz==2021.1 -PyYAML==5.4.1 -six==1.16.0 -style==1.1.6 -typing-extensions==3.10.0.0 -yarl==1.6.3 -zope.interface==5.4.0 diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 28c6c8d..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,9 +0,0 @@ -version: '3.5' - -services: - geasbot-app: - build: ./app - container_name: geas_bot - volumes: - - ./app:/usr/src/app - restart: unless-stopped \ No newline at end of file diff --git a/resources.md b/resources.md deleted file mode 100644 index 07c9454..0000000 --- a/resources.md +++ /dev/null @@ -1,46 +0,0 @@ -# Resources for Maintaining the Bot - -## Documentation - -1. [Discord Py Documentation](https://discordpy.readthedocs.io/en/stable/index.html) - -> 1. [Quickstart Guide](https://discordpy.readthedocs.io/en/stable/quickstart.html) -> 2. [Set up of Discord Bot Account](https://discordpy.readthedocs.io/en/stable/discord.html) -> 3. [**Important**: Primer to Gateway Intents](https://discordpy.readthedocs.io/en/stable/intents.html) -`N.B.: this is an important security feature of Discord that is now mandatory to configure and imposes restructions on some of the Bot's functionality unless appropriately configured. Keep an eye on this.` -> 4. [Repository with example code](https://github.com/Rapptz/discord.py/tree/v1.7.3/examples) -> 5. [Logging Setup](https://discordpy.readthedocs.io/en/stable/logging.html) - -2. [Discord Py Slash Command Documentation](https://discord-py-slash-command.readthedocs.io/en/latest/index.html) - -> 1. [Discord Py Slash Command Authentication](https://discord-py-slash-command.readthedocs.io/en/latest/quickstart.html) -`N.B.: this is an important security feature in Discord's API, and commands will not be configured unless the applications.commands scope is configured correctly.` -> 2. [How to add Slash Commands, including sub-commands](https://discord-py-slash-command.readthedocs.io/en/latest/faq.html#:~:text=If%20your%20slash%20commands%20don,commands%20scope%20in%20that%20guild.) -> 3. [Slash Command Cogs Module](https://discord-py-slash-command.readthedocs.io/en/latest/discord_slash.cog_ext.html?highlight=cog#discord_slash.cog_ext.cog_subcommand) -> 4. [Discord Py Slach Commands library Components Documentation](https://discord-py-slash-command.readthedocs.io/en/latest/components.html) - -`N.B.: Components are what Discord calls buttons and drop down menus. -There are multiple libraries that offer Components integration, but the Discord Py Slash Command is adequate in doing so, and has the clearest documentation so far. -It's best to stick to one library to keep it consistent. -Avoid the Discord_components library as it causes conflicts with Discord Py Slash Commands.` - - -## YouTube Tutorials - -1. [Starting from the basics by Lucas](https://www.youtube.com/watch?v=nW8c7vT6Hl4) -2. [Introduction to Cogs](https://www.youtube.com/watch?v=vQw8cFfZPx0) -3. [Dynamic prefixes for different servers](https://www.youtube.com/watch?v=yrHbGhem6I4) -4. [Using the new Slash Command API](https://www.youtube.com/watch?v=CLQ8gfb2jh4) - -## Communities - -### Discord Py - -1. [Discord Py server](https://discord.gg/r3sSKJJ): Discord server to talk to others in the community -2. [Discord Py Github issue tracker](https://github.com/Rapptz/discord.py/issues): place to report bugs and issues with the API -3. [Discord Py discussion page](https://github.com/Rapptz/discord.py/discussions): wiki for any other discussions - -### Discord Py Slash Commands - -1. [Discord Py Slash Commands Discord Server](https://discord.gg/KkgMBVuEkx): Discord server with a forum to ask questions in -2. [Discord Py Slash Commands Issue Tracker on GitHub](https://github.com/discord-py-slash-commands/discord-py-interactions/issues)