Add Guild event handlers
This commit is contained in:
parent
665ce34735
commit
3e8bbe8695
46
geeksbot/exts/guild_events.py
Normal file
46
geeksbot/exts/guild_events.py
Normal file
@ -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))
|
||||||
@ -21,7 +21,7 @@ class Geeksbot(commands.Bot):
|
|||||||
self.description = "Geeksbot v2"
|
self.description = "Geeksbot v2"
|
||||||
kwargs['description'] = self.description
|
kwargs['description'] = self.description
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.config_dir = 'geeksbot/config/'
|
self.config_dir = 'geeksbot/config'
|
||||||
self.config_file = 'bot_config.json'
|
self.config_file = 'bot_config.json'
|
||||||
self.extension_dir = 'exts'
|
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)
|
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.aio_session = aiohttp.ClientSession(loop=self.loop)
|
||||||
self.auth_header = {'Authorization': f'Token {self.api_token}'}
|
self.auth_header = {'Authorization': f'Token {self.api_token}'}
|
||||||
self.api_base = 'https://geeksbot.app/api'
|
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.bot_config = json.load(f)
|
||||||
self.embed_color = discord.Colour.from_rgb(49, 107, 111)
|
self.embed_color = discord.Colour.from_rgb(49, 107, 111)
|
||||||
self.error_color = discord.Colour.from_rgb(142, 29, 31)
|
self.error_color = discord.Colour.from_rgb(142, 29, 31)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user