Пример #1
0
 async def unfreeze_message(self, ctx: commands.Context,
                            message_link: converters.MessageLink) -> None:
     """Unfreezes a message"""
     orig_message = await starboard_funcs.orig_message(
         self.bot, message_link.id)
     if not orig_message:
         raise errors.DoesNotExist("I can't unfreeze that messsage because "
                                   "it does not exist in the database.")
     await utility_funcs.handle_freezing(self.bot, orig_message["id"],
                                         orig_message["guild_id"], False)
     await ctx.send("Message unfrozen")
Пример #2
0
 async def freeze_message(self, ctx: commands.Context,
                          message_link: converters.MessageLink) -> None:
     """Freezes a message, so the point count will
     not update."""
     orig_message = await starboard_funcs.orig_message(
         self.bot, message_link.id)
     if not orig_message:
         raise errors.DoesNotExist("I couldn't freeze the message because "
                                   "it does not exist in the database.")
     await utility_funcs.handle_freezing(self.bot, orig_message["id"],
                                         orig_message["guild_id"], True)
     await ctx.send("Message frozen")
Пример #3
0
    async def message_info(self, ctx: commands.Context,
                           message: converters.MessageLink) -> None:
        """Shows useful info on a message."""
        orig = await starboard_funcs.orig_message(self.bot, message.id)
        if not orig:
            raise errors.DoesNotExist(
                "That message does not exist in the database.")
        jump = utils.jump_link(orig["id"], orig["channel_id"],
                               orig["guild_id"])
        embed = discord.Embed(
            title="Message Info",
            color=self.bot.theme_color,
            description=(
                f"[Jump to Message]({jump})\n"
                f"Channel: <#{orig['channel_id']}>\n"
                f"ID: {orig['id']} (`{orig['channel_id']}-{orig['id']}`)\n"
                f"Author: <@{orig['author_id']}> | `{orig['author_id']}`\n"
                f"Trashed: {orig['trashed']}"),
        )
        for s in await self.bot.db.get_starboards(ctx.guild.id):
            s_obj = ctx.guild.get_channel(int(s["id"]))
            if not s_obj:
                continue
            sb_message = await self.bot.db.fetchrow(
                """SELECT * FROM starboard_messages
                WHERE orig_id=$1 AND starboard_id=$2""",
                orig["id"],
                s["id"],
            )
            if not sb_message:
                jump = "Not On Starboard"
                points = 0
                forced = False
            else:
                _jump = utils.jump_link(
                    sb_message["id"],
                    sb_message["starboard_id"],
                    orig["guild_id"],
                )
                jump = f"[Jump]({_jump})"
                points = sb_message["points"]
                forced = s["id"] in orig["forced"]
            embed.add_field(
                name=s_obj.name,
                value=(f"<#{s['id']}>: {jump}\nPoints: {s['required_remove']}"
                       f"/**{points}**/{s['required']}\nForced: {forced}"),
            )

        await ctx.send(embed=embed)
Пример #4
0
 async def untrash_message(self, ctx: commands.Context,
                           message_link: converters.MessageLink) -> None:
     """Untrashes a message for all starboards"""
     orig_sql_message = await starboard_funcs.orig_message(
         self.bot, message_link.id)
     if not orig_sql_message:
         raise errors.DoesNotExist(
             "That message does not exist in the database.")
     await utility_funcs.handle_trashing(
         self.bot,
         orig_sql_message["id"],
         orig_sql_message["guild_id"],
         False,
     )
     await ctx.send("Message untrashed")
Пример #5
0
 async def enable_command(
     self, ctx: commands.Context, command: converters.Command
 ) -> None:
     """Enables a command"""
     guild = await self.bot.db.get_guild(ctx.guild.id)
     name = command.qualified_name
     new_commands = guild["disabled_commands"]
     if name not in new_commands:
         raise errors.DoesNotExist("That command is not disabled")
     new_commands.remove(name)
     await self.bot.db.execute(
         """UPDATE guilds
         SET disabled_commands=$1::text[]
         WHERE id=$2""",
         new_commands,
         ctx.guild.id,
     )
     await ctx.send(f"Enabled `{name}`")
Пример #6
0
    async def trash_message(self, ctx: commands.Context,
                            message_link: converters.MessageLink) -> None:
        """Trashes a message for all starboards.

        A trashed message cannot be starred, added to
        more starboards, or be viewed on any of the
        current starboards."""
        orig_sql_message = await starboard_funcs.orig_message(
            self.bot, message_link.id)
        if not orig_sql_message:
            raise errors.DoesNotExist(
                "That message has not been starred, so I "
                "can't trash it.")
        await utility_funcs.handle_trashing(
            self.bot,
            orig_sql_message["id"],
            orig_sql_message["guild_id"],
            True,
        )
        await ctx.send("Message trashed")
Пример #7
0
    async def remove_prefix(self, ctx: commands.Context, prefix: str) -> None:
        """Removes a prefix"""
        to_remove = prefix
        guild = await self.bot.db.get_guild(ctx.guild.id)
        if prefix not in guild["prefixes"]:
            matches = 0
            match = None
            for p in guild["prefixes"]:
                if p.startswith(prefix):
                    matches += 1
                    match = p
            if matches > 1:
                raise discord.InvalidArgument(
                    f"I found {matches} matches for `{prefix}`. "
                    "Please be more specific."
                )
            elif not match:
                raise errors.DoesNotExist(f"No matches found for `{prefix}`")
            else:
                await ctx.send(
                    f"Did you want to remove `{match}` " "from the prefixes?"
                )
                if not await utils.confirm(ctx):
                    await ctx.send("Cancelled")
                    return
                to_remove = match
        new_prefixes = guild["prefixes"]
        new_prefixes.remove(to_remove)

        await self.bot.db.execute(
            """UPDATE guilds
            SET prefixes=$1
            WHERE id=$2""",
            new_prefixes,
            ctx.guild.id,
        )

        await ctx.send(f"Removed `{to_remove}` from the prefixes.")