Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
 def __init__(self, db):
     self.db = db
     self.query = query.Query(self.db)
     self.conn = sqlite3.connect(db)
     self.c = self.conn.cursor()
Ejemplo n.º 5
0
 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