Esempio n. 1
0
 async def _quote(message, command, silent=False):
     """Print some quote from quotes database
 Examples:
     !quote
     !quote 1"""
     if not await Util.check_args_count(message, command, silent, min=1, max=2):
         return
     if not bc.config.quotes:
         return null(await Msg.response(message, "<Quotes database is empty>", silent))
     if len(command) == 2:
         index = await Util.parse_int(
             message, command[1], f"Second parameter for '{command[0]}' should be an index of quote", silent)
         if index is None:
             return
     else:
         index = random.choice(list(bc.config.quotes.keys()))
     if index not in bc.config.quotes.keys():
         return null(await Msg.response(message, "Invalid index of quote!", silent))
     quote = bc.config.quotes[index]
     e = DiscordEmbed()
     e.title("Quote")
     e.description(quote.message)
     e.color(random.randint(0x000000, 0xffffff))
     e.timestamp(datetime.datetime.strptime(str(quote.timestamp), const.TIMESTAMP_DATETIME_FORMAT))
     e.add_field("Index", str(index), True)
     e.add_field("Author", quote.author if quote.author else "<unknown>", True)
     e.add_field("Added by", quote.added_by, True)
     await Msg.response(message, None, silent, embed=e.get())
Esempio n. 2
0
 async def _listreminder(message, command, silent=False):
     """Print list of reminders
 Examples:
     !listreminder
     !listreminder 5 <- prints only first 5 reminders"""
     if not await Util.check_args_count(
             message, command, silent, min=1, max=2):
         return
     if len(command) == 2:
         count = await Util.parse_int(
             message, command[1],
             f"Second parameter for '{command[0]}' should be amount of reminders to print",
             silent)
         if count is None:
             return
         reminders_count = count
     else:
         reminders_count = len(bc.config.reminders)
     reminder_list = []
     for index, reminder in bc.config.reminders.items():
         rep = f' (repeats every {reminder.repeat_after} {reminder.repeat_interval_measure})'
         prereminders = f' ({", ".join([str(x) + " min" for x in reminder.prereminders_list])} prereminders enabled)'
         reminder_list.append((
             reminder.time, reminder.message, f"{index} at {reminder.time} "
             f"{f' in <#{reminder.channel_id}>' if message.channel.id != reminder.channel_id else ''}"
             f"{rep if reminder.repeat_after else ''}"
             f"{prereminders if reminder.prereminders_list else ''}"))
     reminder_list.sort()
     reminder_list = reminder_list[:reminders_count]
     embed_color = random.randint(0x000000, 0xffffff)
     for reminder_chunk in Msg.split_by_chunks(
             reminder_list, const.DISCORD_MAX_EMBED_FILEDS_COUNT):
         e = DiscordEmbed()
         e.title("List of reminders")
         e.color(embed_color)
         for rem in reminder_chunk:
             e.add_field(rem[1], rem[2])
         await Msg.response(message, None, silent, embed=e.get())
Esempio n. 3
0
 async def _reminder(message, command, silent=False):
     """Print information about reminder
 Example:
     !reminder 1"""
     if not await Util.check_args_count(
             message, command, silent, min=2, max=2):
         return
     index = await Util.parse_int(
         message, command[1],
         f"Second parameter for '{command[0]}' should be an index of reminder",
         silent)
     if index is None:
         return
     if index not in bc.config.reminders.keys():
         return null(await
                     Msg.response(message, "Invalid index of reminder!",
                                  silent))
     reminder = bc.config.reminders[index]
     e = DiscordEmbed()
     e.title("Reminder info")
     e.description(reminder.message)
     e.footer(
         f"{reminder.author} • {datetime.datetime.strptime(reminder.time, const.REMINDER_DATETIME_FORMAT)}"
     )
     e.add_field("Index", str(index), True)
     e.add_field("Channel", f"<#{reminder.channel_id}>", True)
     if reminder.repeat_after:
         e.add_field(
             "Repeats every",
             f"{reminder.repeat_after} {reminder.repeat_interval_measure}",
             True)
     e.add_field("Created", reminder.time_created, True)
     if reminder.prereminders_list:
         e.add_field(
             "Pre reminders (in minutes)",
             ', '.join([str(x) for x in reminder.prereminders_list]), True)
     if reminder.notes:
         e.add_field("Notes", reminder.notes, True)
     await Msg.response(message, None, silent, embed=e.get())