Implemented Webhooks to make sending messages look more real, as an option

This commit is contained in:
Jeremy Zhang
2017-07-01 06:52:21 +00:00
parent 3c82b3b6b0
commit 087606bd40
8 changed files with 106 additions and 11 deletions

View File

@ -212,3 +212,7 @@ class Titan(discord.Client):
await self.database.update_guild(before[0].server)
else:
await self.database.update_guild(after[0].server)
async def on_webhooks_update(self, server):
await self.wait_until_dbonline()
await self.database.update_guild(server)

View File

@ -119,6 +119,7 @@ class DatabaseInterface(object):
session.commit()
async def update_guild(self, guild):
server_webhooks = await self.bot.get_server_webhooks(guild)
async with threadpool():
with self.get_session() as session:
gui = session.query(Guilds).filter(Guilds.guild_id == guild.id).first()
@ -128,6 +129,7 @@ class DatabaseInterface(object):
guild.name,
json.dumps(self.get_roles_list(guild.roles)),
json.dumps(self.get_channels_list(guild.channels)),
json.dumps(self.get_webhooks_list(server_webhooks)),
json.dumps(self.get_emojis_list(guild.emojis)),
guild.owner_id,
guild.icon
@ -137,11 +139,24 @@ class DatabaseInterface(object):
gui.name = guild.name
gui.roles = json.dumps(self.get_roles_list(guild.roles))
gui.channels = json.dumps(self.get_channels_list(guild.channels))
gui.webhooks = json.dumps(self.get_webhooks_list(server_webhooks))
gui.emojis = json.dumps(self.get_emojis_list(guild.emojis))
gui.owner_id = guild.owner_id
gui.icon = guild.icon
session.commit()
def get_webhooks_list(self, guild_webhooks):
webhooks = []
for webhook in guild_webhooks:
webhooks.append({
"id": webhook.id,
"guild_id": webhook.server.id,
"channel_id": webhook.channel.id,
"name": webhook.name,
"token": webhook.token,
})
return webhooks
def get_emojis_list(self, guildemojis):
emojis = []
for emote in guildemojis:

View File

@ -12,12 +12,13 @@ class Guilds(Base):
mentions_limit = db.Column(db.Integer) # If there is a limit on the number of mentions in a msg
roles = db.Column(db.Text()) # Guild Roles
channels = db.Column(db.Text()) # Guild channels
webhooks = db.Column(db.Text()) # Guild webhooks
emojis = db.Column(db.Text()) # Guild Emojis
owner_id = db.Column(db.String(255)) # Snowflake of the owner
icon = db.Column(db.String(255)) # The icon string, null if none
discordio = db.Column(db.String(255)) # Custom Discord.io Invite Link
def __init__(self, guild_id, name, roles, channels, emojis, owner_id, icon):
def __init__(self, guild_id, name, roles, channels, webhooks, emojis, owner_id, icon):
self.guild_id = guild_id
self.name = name
self.unauth_users = True # defaults to true
@ -27,6 +28,7 @@ class Guilds(Base):
self.mentions_limit = -1 # -1 = unlimited mentions
self.roles = roles
self.channels = channels
self.webhooks = webhooks
self.emojis = emojis
self.owner_id = owner_id
self.icon = icon