async def on_message(self, message): # This prevents bot from reading its own messages in on_message if not message.author.bot and message.server is not None: q = query.Query(config.db) response = q.get_msg_response(message.server.id, message.content) if response is not None: await self.client.send_message(message.channel, response)
async def send_reminders(self): await self.client.wait_until_ready() q = query.Query(config.db) deletion = delete_from_db.Deletion(config.db) while not self.client.is_closed: # Reminders tuple: {recipient_type, recipient_id, message} reminders = q.get_current_reminders() for reminder in reminders: remind_msg = "Reminder: " + reminder[2] if reminder[0] == '@': recipient = await self.client.get_user_info(reminder[1]) await self.client.send_message(recipient, remind_msg) deletion.del_user_reminder(reminder[1], reminder[2]) else: recipient = self.get_channel(reminder[1]) server_id = recipient.server.id await self.client.send_message(recipient, remind_msg) deletion.del_reminder(server_id, reminder[2]) await asyncio.sleep(10)
async def display_list(self, server_id, args): # Hard-coded value that can change in the future msg_per_pg = 10 q = query.Query(config.db) # Responses will hold a tuple of all the messages and the corresponding # responses like so: # ((msg1, resp1), (msg2, resp2), (msg3, resp3)) responses = q.get_all_responses(server_id) resp_len = len(responses) if resp_len < 1: await self.client.say("No responses found") return # pg is current page number - if over the page limit, default = last pg pg = 1 if args and str(args[0]).isdigit(): pg = min(math.floor(resp_len / msg_per_pg), int(args[0])) if pg <= 0: pg = 1 # The start_idx is the index where the first item in the list will # be found in the tuple. It's calculated by multiplying the page number # by the messages per page and subtracting messages per page # Ex. page 2 for 10 msg per page -> (2 * 10) - 10 = start at idx 10 start_idx = (msg_per_pg * pg) - msg_per_pg # Calculates how many items will appear on the page. This will be the # default messages per page or less if the current page will hold less # items items_in_pg = min(msg_per_pg, resp_len - start_idx) msg_list = "" for i in range(start_idx, start_idx + items_in_pg): msg_list += "Message: " + responses[i][0] + "\n" + \ "Response: " + responses[i][1] + "\n\n" embed = discord.Embed(title="Automatic responses", description="\u200b", colour=discord.Colour.orange()) embed.add_field(name="\u200b", value=msg_list, inline=False) embed.set_footer(text="Page " + str(pg) + " of " + str(math.ceil(resp_len / items_in_pg))) await self.client.say(embed=embed)
def __init__(self, db): self.db = db self.query = query.Query(self.db) self.conn = sqlite3.connect(db) self.c = self.conn.cursor()
def __init__(self, db, member_dict): self.db = db self.conn = sqlite3.connect(self.db) self.c = self.conn.cursor() self.query = query.Query(self.db) self.member_dict = member_dict