Not manually releasing connections back to the pool anymore

pull/9/head
sgoudham 4 years ago
parent 084c97fdd2
commit 9a18af6e59

@ -243,10 +243,6 @@ class Bot(commands.Bot):
return self.member_cache.cache[member_id, guild_id] return self.member_cache.cache[member_id, guild_id]
# Release connection back to pool
finally:
await pool.release(conn)
# --------------------------------------------!End Cache Section!--------------------------------------------------- # --------------------------------------------!End Cache Section!---------------------------------------------------
# --------------------------------------------!Starboard Section!--------------------------------------------------- # --------------------------------------------!Starboard Section!---------------------------------------------------
@ -351,10 +347,6 @@ class Bot(commands.Bot):
else: else:
return None, 0 return None, 0
# Release connection back to pool
finally:
await pool.release(conn)
# --------------------------------------------!EndStarboard Section!------------------------------------------------- # --------------------------------------------!EndStarboard Section!-------------------------------------------------
# --------------------------------------------!Modmail Section!----------------------------------------------------- # --------------------------------------------!Modmail Section!-----------------------------------------------------
@ -411,10 +403,6 @@ class Bot(commands.Bot):
else: else:
self.enso_cache[guild_id]["roles_persist"] = value self.enso_cache[guild_id]["roles_persist"] = value
# Release connection back to pool
finally:
await pool.release(conn)
# --------------------------------------------!End RolePersist Section!--------------------------------------------- # --------------------------------------------!End RolePersist Section!---------------------------------------------
# --------------------------------------------!ModLogs Section!----------------------------------------------------- # --------------------------------------------!ModLogs Section!-----------------------------------------------------
@ -449,10 +437,6 @@ class Bot(commands.Bot):
# Store in cache # Store in cache
self.enso_cache[ctx.guild.id]["modlogs"] = channel_id self.enso_cache[ctx.guild.id]["modlogs"] = channel_id
# Release connection back to pool
finally:
await pool.release(conn)
def remove_modlog_channel(self, guild_id): def remove_modlog_channel(self, guild_id):
"""Remove the value of modlog for the guild specified""" """Remove the value of modlog for the guild specified"""
@ -492,10 +476,6 @@ class Bot(commands.Bot):
# Store in cache # Store in cache
self.enso_cache[ctx.guild.id]["prefix"] = prefix self.enso_cache[ctx.guild.id]["prefix"] = prefix
# Release connection back to pool
finally:
await pool.release(conn)
def get_prefix_for_guild(self, guild_id): def get_prefix_for_guild(self, guild_id):
"""Get the prefix of the guild that the user is in""" """Get the prefix of the guild that the user is in"""
@ -547,10 +527,6 @@ class Bot(commands.Bot):
result["muted_roles"] = role_ids result["muted_roles"] = role_ids
print(rowcount, f"Roles Added For User {member} in {ctx.guild}") print(rowcount, f"Roles Added For User {member} in {ctx.guild}")
# Release connection back to pool
finally:
await pool.release(conn)
async def clear_roles(self, member): async def clear_roles(self, member):
"""Clear the roles when the user has been unmuted""" """Clear the roles when the user has been unmuted"""
@ -575,10 +551,6 @@ class Bot(commands.Bot):
result["muted_roles"] = None result["muted_roles"] = None
print(rowcount, f"Roles Cleared For User {member} in {member.guild.name}") print(rowcount, f"Roles Cleared For User {member} in {member.guild.name}")
# Release connection back to pool
finally:
await pool.release(conn)
# --------------------------------------------!End Roles/Colour/Embed Section!-------------------------------------- # --------------------------------------------!End Roles/Colour/Embed Section!--------------------------------------
# --------------------------------------------!Events Section!------------------------------------------------------ # --------------------------------------------!Events Section!------------------------------------------------------
@ -849,10 +821,6 @@ class Bot(commands.Bot):
else: else:
print(rowcount, f"{member} Left {member.guild.name}, Roles stored into Members") print(rowcount, f"{member} Left {member.guild.name}, Roles stored into Members")
# Release connection back to pool
finally:
await pool.release(conn)
async def on_guild_channel_delete(self, channel): async def on_guild_channel_delete(self, channel):
"""Deleting modlogs/modmail channel if it's deleted in the guild""" """Deleting modlogs/modmail channel if it's deleted in the guild"""
@ -887,10 +855,6 @@ class Bot(commands.Bot):
else: else:
self.remove_modlog_channel(channel.guild.id) self.remove_modlog_channel(channel.guild.id)
# Release connection back to pool
finally:
await pool.release(conn)
# Delete all of the starboard information when the channel is deleted from the guild # Delete all of the starboard information when the channel is deleted from the guild
if channel.id == starboard: if channel.id == starboard:
# Setup pool connection # Setup pool connection
@ -935,10 +899,6 @@ class Bot(commands.Bot):
else: else:
self.delete_modmail(channel.guild.id) self.delete_modmail(channel.guild.id)
# Release connection back to pool
finally:
await pool.release(conn)
# --------------------------------------------!End Events Section!-------------------------------------------------- # --------------------------------------------!End Events Section!--------------------------------------------------
def execute(self): def execute(self):

@ -27,8 +27,9 @@ from discord.ext.commands import has_permissions, Cog, group, bot_has_permission
command command
# Method to ask the user if they want to be anonymous or not
def anon_or_not(self, author): def anon_or_not(self, author):
"""Method to ask the user if they want to be anonymous or not"""
# Set up embed to let the user how to start sending modmail # Set up embed to let the user how to start sending modmail
AnonModMailEmbed = Embed(title="**Want to send it Anonymously?**", AnonModMailEmbed = Embed(title="**Want to send it Anonymously?**",
colour=self.bot.admin_colour, colour=self.bot.admin_colour,
@ -53,9 +54,9 @@ def anon_or_not(self, author):
return AnonModMailEmbed return AnonModMailEmbed
# Method to send an embed to to let the user know to type into chat
def send_instructions(self, author): def send_instructions(self, author):
# Set up embed to let the user know that they have aborted the modmail """Method to send an embed to to let the user know to type into chat"""
SendModMailEmbed = Embed(title="**Please enter a message for it to be sent to the staff!**", SendModMailEmbed = Embed(title="**Please enter a message for it to be sent to the staff!**",
colour=self.bot.admin_colour, colour=self.bot.admin_colour,
timestamp=datetime.datetime.utcnow()) timestamp=datetime.datetime.utcnow())
@ -73,9 +74,9 @@ def send_instructions(self, author):
return SendModMailEmbed return SendModMailEmbed
# Method to let the user know that the message must be above 50 characters
def error_handling(self, author): def error_handling(self, author):
# Set up embed to let the user know that the message must be above 50 characters """Method to let the user know that the message must be above 50 characters"""
ErrorHandlingEmbed = Embed( ErrorHandlingEmbed = Embed(
title="Uh Oh! Please make sure the message is above **50** and below **1024** characters!", title="Uh Oh! Please make sure the message is above **50** and below **1024** characters!",
colour=self.bot.admin_colour, colour=self.bot.admin_colour,
@ -94,9 +95,9 @@ def error_handling(self, author):
return ErrorHandlingEmbed return ErrorHandlingEmbed
# Method to send an embed into chat to let the user know that their mail has been sent successfully
def message_sent_confirmation(self, author): def message_sent_confirmation(self, author):
# Set up embed to let the user know that they have sent the mail """Method to send an embed into chat to let the user know that their mail has been sent successfully"""
ConfirmationEmbed = Embed(title="**Message relayed to Staff!!**", ConfirmationEmbed = Embed(title="**Message relayed to Staff!!**",
colour=self.bot.admin_colour, colour=self.bot.admin_colour,
timestamp=datetime.datetime.utcnow()) timestamp=datetime.datetime.utcnow())
@ -114,8 +115,9 @@ def message_sent_confirmation(self, author):
return ConfirmationEmbed return ConfirmationEmbed
# Method to actually allow the message to be sent to #mod-mail
def send_modmail(self, msg, author): def send_modmail(self, msg, author):
"""Method to actually allow the message to be sent to modmail logging channel"""
embed = Embed(title="Modmail", embed = Embed(title="Modmail",
colour=self.bot.admin_colour, colour=self.bot.admin_colour,
timestamp=datetime.datetime.utcnow()) timestamp=datetime.datetime.utcnow())
@ -288,10 +290,6 @@ class Guild(Cog):
mod_log_setup = True mod_log_setup = True
await self.bot.storage_modlog_for_guild(ctx, user_channel.id, mod_log_setup) await self.bot.storage_modlog_for_guild(ctx, user_channel.id, mod_log_setup)
# Release the connection back to the pool
finally:
await pool.release(conn)
@modlogs.command(name="update") @modlogs.command(name="update")
async def mlupdate(self, ctx, user_channel: TextChannel): async def mlupdate(self, ctx, user_channel: TextChannel):
"""Change the channel that your modlogs are sent to""" """Change the channel that your modlogs are sent to"""
@ -321,10 +319,6 @@ class Guild(Cog):
mod_log_setup = False mod_log_setup = False
await self.bot.storage_modlog_for_guild(ctx, user_channel.id, mod_log_setup) await self.bot.storage_modlog_for_guild(ctx, user_channel.id, mod_log_setup)
# Release the connection back to the pool
finally:
await pool.release(conn)
@modlogs.command("delete") @modlogs.command("delete")
async def mldelete(self, ctx): async def mldelete(self, ctx):
"""Delete the existing modlogs channel""" """Delete the existing modlogs channel"""
@ -408,10 +402,6 @@ class Guild(Cog):
await self.bot.generate_embed(ctx, desc=text) await self.bot.generate_embed(ctx, desc=text)
return return
# Release the connection back to the pool
finally:
await pool.release(conn)
# Set up embed to let the user how to start sending modmail # Set up embed to let the user how to start sending modmail
desc = "React to this message if you want to send a message to the Staff Team!" \ desc = "React to this message if you want to send a message to the Staff Team!" \
"\n\n**React with ✅**" \ "\n\n**React with ✅**" \
@ -454,10 +444,6 @@ class Guild(Cog):
# Store into cache # Store into cache
self.bot.cache_store_modmail(ctx.guild.id, modmail.id, modmail_message.id, modmail_logging.id) self.bot.cache_store_modmail(ctx.guild.id, modmail.id, modmail_message.id, modmail_logging.id)
# Release connection back into pool
finally:
await pool.release(conn)
@mod_mail.command(name="update") @mod_mail.command(name="update")
async def mmupdate(self, ctx, modmail_logging_channel: TextChannel): async def mmupdate(self, ctx, modmail_logging_channel: TextChannel):
""" """
@ -486,10 +472,6 @@ class Guild(Cog):
await self.bot.generate_embed(ctx, desc=text) await self.bot.generate_embed(ctx, desc=text)
return return
# Release connection back to pool
finally:
await pool.release(conn)
# Setup up pool connection and cursor # Setup up pool connection and cursor
async with pool.acquire() as conn: async with pool.acquire() as conn:
@ -511,10 +493,6 @@ class Guild(Cog):
# Update cache # Update cache
self.bot.update_modmail(ctx.guild.id, modmail_logging_channel.id) self.bot.update_modmail(ctx.guild.id, modmail_logging_channel.id)
# Release connection back to pool
finally:
await pool.release(conn)
@mod_mail.command(name="delete") @mod_mail.command(name="delete")
async def mmdelete(self, ctx): async def mmdelete(self, ctx):
"""Delete the entire modmail system from the guild""" """Delete the entire modmail system from the guild"""
@ -540,10 +518,6 @@ class Guild(Cog):
await self.bot.generate_embed(ctx, desc=text) await self.bot.generate_embed(ctx, desc=text)
return return
# Release connection back to pool
finally:
await pool.release(conn)
# Setup up pool connection # Setup up pool connection
async with pool.acquire() as conn: async with pool.acquire() as conn:
@ -565,10 +539,6 @@ class Guild(Cog):
# Delete from cache # Delete from cache
self.bot.delete_modmail(ctx.guild.id) self.bot.delete_modmail(ctx.guild.id)
# Release connection back to pool
finally:
await pool.release(conn)
@Cog.listener() @Cog.listener()
async def on_raw_reaction_add(self, payload): async def on_raw_reaction_add(self, payload):
"""Listen for reactions for modmail channel""" """Listen for reactions for modmail channel"""

@ -26,7 +26,7 @@ from typing import Optional
import discord import discord
from discord import Embed, DMChannel from discord import Embed, DMChannel
from discord.ext import commands from discord.ext import commands
from discord.ext.commands import Cog, command, has_permissions, guild_only from discord.ext.commands import Cog, command, has_permissions, guild_only, is_owner
class CannotPaginate(Exception): class CannotPaginate(Exception):
@ -63,7 +63,7 @@ class Pages:
Our permissions for the channel. Our permissions for the channel.
""" """
def __init__(self, ctx, *, entries, per_page=6, show_entry_count=True): def __init__(self, ctx, *, entries, per_page=8, show_entry_count=True):
self.bot = ctx.bot self.bot = ctx.bot
self.prefix = ctx.prefix self.prefix = ctx.prefix
@ -370,7 +370,7 @@ def _command_signature(cmd):
class HelpPaginator(Pages): class HelpPaginator(Pages):
def __init__(self, ctx, entries, *, per_page=8): def __init__(self, ctx, entries, *, per_page=10):
super().__init__(ctx, entries=entries, per_page=per_page) super().__init__(ctx, entries=entries, per_page=per_page)
self.reaction_emojis.append(('\N{WHITE QUESTION MARK ORNAMENT}', self.show_bot_help)) self.reaction_emojis.append(('\N{WHITE QUESTION MARK ORNAMENT}', self.show_bot_help))
self.total = len(entries) self.total = len(entries)
@ -447,7 +447,7 @@ class HelpPaginator(Pages):
entries = sorted(ctx.bot.commands, key=key) entries = sorted(ctx.bot.commands, key=key)
nested_pages = [] nested_pages = []
per_page = 6 per_page = 8
# 0: (cog, desc, commands) (max len == 9) # 0: (cog, desc, commands) (max len == 9)
# 1: (cog, desc, commands) (max len == 9) # 1: (cog, desc, commands) (max len == 9)
@ -650,6 +650,27 @@ class Help(Cog):
except Exception as ex: except Exception as ex:
await ctx.send(f"**{ex}**") await ctx.send(f"**{ex}**")
@command(name="forceprefix")
@guild_only()
@is_owner()
async def override_prefix(self, ctx, new: Optional[str] = None):
"""Override the prefix in any given guild (Owner only)"""
# As long as a new prefix has been given and is less than 5 characters
if new and len(new) <= 5:
# Store the new prefix in the dictionary and update the database
await self.bot.storage_prefix_for_guild(ctx, new)
# Making sure that errors are handled if prefix is above 5 characters
elif new and len(new) > 5:
await self.bot.generate_embed(ctx, desc="The guild prefix must be less than or equal to **5** characters!")
# if no prefix was provided
elif not new:
# Grab the current prefix for the guild within the cached dictionary
await self.bot.generate_embed(ctx,
desc=f"**The current guild prefix is `{self.bot.get_prefix_for_guild(ctx.guild.id)}`**")
@command(name="prefix") @command(name="prefix")
@guild_only() @guild_only()
@has_permissions(manage_guild=True) @has_permissions(manage_guild=True)

@ -90,10 +90,6 @@ class Owner(Cog):
else: else:
print(f"Record(s) Inserted Into Members") print(f"Record(s) Inserted Into Members")
# Release connection back to pool
finally:
await pool.release(conn)
@command(name="cache", hidden=True) @command(name="cache", hidden=True)
@is_owner() @is_owner()
async def set_cache(self, ctx, size: Optional[int]): async def set_cache(self, ctx, size: Optional[int]):

@ -139,10 +139,6 @@ class Relationship(Cog):
db_member["married"] = ctx.author.id db_member["married"] = ctx.author.id
db_member["married_date"] = message_time db_member["married_date"] = message_time
# Release connection back to pool
finally:
await pool.release(conn)
# Congratulate them! # Congratulate them!
desc = f"**Congratulations! 。゚( ゚^∀^゚)゚。 {ctx.author.mention} and {member.mention} are now married to each other!**" desc = f"**Congratulations! 。゚( ゚^∀^゚)゚。 {ctx.author.mention} and {member.mention} are now married to each other!**"
await self.bot.generate_embed(ctx, desc=desc) await self.bot.generate_embed(ctx, desc=desc)
@ -235,10 +231,6 @@ class Relationship(Cog):
db_member["married"] = None db_member["married"] = None
db_member["married_date"] = None db_member["married_date"] = None
# Release connection back to pool
finally:
await pool.release(conn)
# Congratulate them! # Congratulate them!
desc = f"**૮( ´⁰▱๋⁰ )ა {ctx.author.mention} and {member.mention} are now divorced." \ desc = f"**૮( ´⁰▱๋⁰ )ა {ctx.author.mention} and {member.mention} are now divorced." \
f"\nI hope you two can find happiness in life with other people**" f"\nI hope you two can find happiness in life with other people**"

@ -20,14 +20,6 @@ from discord import TextChannel, Embed, NotFound
from discord.ext.commands import Cog, group, bot_has_permissions, has_permissions from discord.ext.commands import Cog, group, bot_has_permissions, has_permissions
def is_url_spoiler(self, text, url):
spoilers = self.spoilers.findall(text)
for spoiler in spoilers:
if url in spoiler:
return True
return False
async def send_starboard_and_update_db(self, payload, action): async def send_starboard_and_update_db(self, payload, action):
"""Send the starboard embed and update database/cache""" """Send the starboard embed and update database/cache"""
@ -52,6 +44,7 @@ async def send_starboard_and_update_db(self, payload, action):
value=f"**Channel:** {message.channel.mention}\n[Jump To Message]({message.jump_url})", value=f"**Channel:** {message.channel.mention}\n[Jump To Message]({message.jump_url})",
inline=False) inline=False)
# Send spoiler attachments as links
if message.attachments: if message.attachments:
file = message.attachments[0] file = message.attachments[0]
spoiler = file.is_spoiler() spoiler = file.is_spoiler()
@ -94,10 +87,6 @@ async def send_starboard_and_update_db(self, payload, action):
else: else:
self.bot.cache_store_starboard_message(message.id, payload.guild_id, None) self.bot.cache_store_starboard_message(message.id, payload.guild_id, None)
# Release connection back to pool
finally:
await pool.release(conn)
else: else:
if new_stars >= self.bot.get_starboard_min_stars(payload.guild_id) and not msg_id: if new_stars >= self.bot.get_starboard_min_stars(payload.guild_id) and not msg_id:
star_message = await channel.send(embed=embed) star_message = await channel.send(embed=embed)
@ -137,10 +126,6 @@ async def send_starboard_and_update_db(self, payload, action):
self.bot.cache_store_starboard_message(message.id, payload.guild_id, star_message.id) self.bot.cache_store_starboard_message(message.id, payload.guild_id, star_message.id)
self.bot.update_starboard_message(message.id, payload.guild_id, new_stars) self.bot.update_starboard_message(message.id, payload.guild_id, new_stars)
# Release connection back to pool
finally:
await pool.release(conn)
async def get_starboard_from_db(self, ctx, action): async def get_starboard_from_db(self, ctx, action):
"""Get the starboard record from DB""" """Get the starboard record from DB"""
@ -171,10 +156,6 @@ async def get_starboard_from_db(self, ctx, action):
await self.bot.generate_embed(ctx, desc=text) await self.bot.generate_embed(ctx, desc=text)
return None return None
# Release the connection back to the pool
finally:
await pool.release(conn)
return not None return not None
@ -223,10 +204,6 @@ class Starboard(Cog):
# Update cache # Update cache
self.bot.update_starboard_min_stars(ctx.guild.id, stars) self.bot.update_starboard_min_stars(ctx.guild.id, stars)
# Release connection back to pool
finally:
await pool.release(conn)
elif stars <= 0: elif stars <= 0:
await self.bot.generate_embed(ctx, desc="Minimum Stars Must Be Over or Equal to 1!") await self.bot.generate_embed(ctx, desc="Minimum Stars Must Be Over or Equal to 1!")
@ -255,16 +232,12 @@ class Starboard(Cog):
# Send confirmation message # Send confirmation message
else: else:
text = "**Starboard** is successfully set up!" \ text = "**Starboard** is successfully set up!" \
f"\nRefer to **{ctx.prefix}help modmail** for more information" f"\nRefer to **{ctx.prefix}help starboard** for more information"
await self.bot.generate_embed(ctx, desc=text) await self.bot.generate_embed(ctx, desc=text)
# Store into cache # Store into cache
self.bot.cache_store_starboard(ctx.guild.id, starboard_channel.id, 1) self.bot.cache_store_starboard(ctx.guild.id, starboard_channel.id, 1)
# Release connection back into pool
finally:
await pool.release(conn)
@starboard.command(name="update") @starboard.command(name="update")
@bot_has_permissions(embed_links=True) @bot_has_permissions(embed_links=True)
async def sb_update(self, ctx, starboard_channel: TextChannel): async def sb_update(self, ctx, starboard_channel: TextChannel):
@ -296,10 +269,6 @@ class Starboard(Cog):
# Update cache # Update cache
self.bot.update_starboard_channel(ctx.guild.id, starboard_channel.id) self.bot.update_starboard_channel(ctx.guild.id, starboard_channel.id)
# Release connection back to pool
finally:
await pool.release(conn)
@starboard.command(name="delete") @starboard.command(name="delete")
@bot_has_permissions(embed_links=True) @bot_has_permissions(embed_links=True)
async def sb_delete(self, ctx): async def sb_delete(self, ctx):
@ -328,22 +297,18 @@ class Starboard(Cog):
# Delete from cache # Delete from cache
self.bot.delete_starboard(ctx.guild.id) self.bot.delete_starboard(ctx.guild.id)
# Release connection back to pool
finally:
await pool.release(conn)
@Cog.listener()
async def on_raw_reaction_remove(self, payload):
"""Removing reaction when a star is removed from the message"""
await send_starboard_and_update_db(self, payload, action="removed")
@Cog.listener() @Cog.listener()
async def on_raw_reaction_add(self, payload): async def on_raw_reaction_add(self, payload):
"""Listening for star reactions for any guilds that have starboard enabled""" """Listening for star reactions for any guilds that have starboard enabled"""
await send_starboard_and_update_db(self, payload, action="added") await send_starboard_and_update_db(self, payload, action="added")
@Cog.listener()
async def on_raw_reaction_remove(self, payload):
"""Editing the message if a star reaction was removed"""
await send_starboard_and_update_db(self, payload, action="removed")
def setup(bot): def setup(bot):
bot.add_cog(Starboard(bot)) bot.add_cog(Starboard(bot))

Loading…
Cancel
Save