diff --git a/geeksbot/exts/guild_events.py b/geeksbot/exts/guild_events.py new file mode 100644 index 0000000..f4b2571 --- /dev/null +++ b/geeksbot/exts/guild_events.py @@ -0,0 +1,46 @@ +import discord +from discord.ext import commands +import logging +import json + +guild_logger = logging.getLogger('guilds') + + +class GuildEvents(commands.Cog): + def __init__(self, bot): + self.bot = bot + + async def on_guild_join(self, guild): + default_config = { + 'prefixes': [self.bot.default_prefix], + 'id': guild.id + } + admin_role = guild.roles[-1] if len(guild.roles) > 1 else 0 + resp = await self.bot.aio_session.post(f'{self.bot.api_base}/guilds', + headers=self.bot.auth_header, + json=default_config) + guild_logger.info(f'Guild Joined {guild.name}: {await resp.json()}') + if resp.status == 200: + for role in guild.roles: + role_dict = { + 'id': str(role.id), + 'role_type': 100 if role == admin_role else 0 + } + role_resp = await self.bot.aio_session.post(f'{self.bot.api_base}/guilds/{guild.id}/roles', + headers=self.bot.auth_header, + json=role_dict) + guild_logger.info(f'Role Added {role.name}: {await role_resp.json()}') + guild_logger.info(f'All Entries Created for {guild.name}') + await guild.me.edit(nick=f'[{self.bot.default_prefix}] Geeksbot') + + async def on_guild_remove(self, guild): + resp = await self.bot.aio_session.delete(f'{self.bot.api_base}/guilds/{guild.id}', + headers=self.bot.auth_header) + if resp.status == 200: + guild_logger.info(f'Left Guild {guild.name}: {await resp.json()}') + else: + guild_logger.error(f'Error Deleting Guild {guild.name}: {await resp.json()}') + + +def setup(bot): + bot.add_cog(GuildEvents(bot)) diff --git a/geeksbot/imports/geeksbot.py b/geeksbot/imports/geeksbot.py index 7e881de..406d0af 100644 --- a/geeksbot/imports/geeksbot.py +++ b/geeksbot/imports/geeksbot.py @@ -21,7 +21,7 @@ class Geeksbot(commands.Bot): self.description = "Geeksbot v2" kwargs['description'] = self.description super().__init__(*args, **kwargs) - self.config_dir = 'geeksbot/config/' + self.config_dir = 'geeksbot/config' self.config_file = 'bot_config.json' self.extension_dir = 'exts' self.cache = redis.Redis(host=os.environ['REDIS_HOST'], port=os.environ['REDIS_PORT'], db=1, charset="utf-8", decode_responses=True) @@ -29,7 +29,7 @@ class Geeksbot(commands.Bot): self.aio_session = aiohttp.ClientSession(loop=self.loop) self.auth_header = {'Authorization': f'Token {self.api_token}'} self.api_base = 'https://geeksbot.app/api' - with open(f'{self.config_dir}{self.config_file}') as f: + with open(f'{self.config_dir}/{self.config_file}') as f: self.bot_config = json.load(f) self.embed_color = discord.Colour.from_rgb(49, 107, 111) self.error_color = discord.Colour.from_rgb(142, 29, 31)