Vivek Santayana
b0b417a8d2
Split cogs into different files About to change file structuring to move dev file to main file
34 lines
1.6 KiB
Python
34 lines
1.6 KiB
Python
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 dev 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):
|
|
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)]['adminroles']:
|
|
if after.is_bot_managed() or after.is_integration() or not after.permissions.administrator:
|
|
conf[str(after.guild.id)]['adminroles'].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)]['adminroles']:
|
|
conf[str(after.guild.id)]['adminroles'].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)) |