예제 #1
0
    def on_message_reaction_add(self, event):
        try:
            # Grab the message, and JOIN across blocks to check if a block exists
            #  for either the message author or the reactor.
            msg = Message.select(
                Message,
                StarboardBlock
            ).join(
                StarboardBlock,
                join_type=JOIN.LEFT_OUTER,
                on=(
                    (
                        (Message.author_id == StarboardBlock.user_id) |
                        (StarboardBlock.user_id == event.user_id)
                    ) &
                    (Message.guild_id == StarboardBlock.guild_id)
                )
            ).where(
                (Message.id == event.message_id)
            ).get()
        except Message.DoesNotExist:
            return

        # If either the reaction or message author is blocked, prevent this action
        if msg.starboardblock.user_id:
            event.delete()
            return

        # Check if the board prevents self stars
        sb_id, board = event.config.get_board(event.channel_id)
        if not sb_id:
            return

        if board.prevent_self_star and msg.author_id == event.user_id:
            event.delete()
            return

        try:
            StarboardEntry.add_star(event.message_id, event.user_id)
        except peewee.IntegrityError:
            msg = self.client.api.channels_messages_get(
                event.channel_id,
                event.message_id)

            if msg:
                Message.from_disco_message(msg)
                StarboardEntry.add_star(event.message_id, event.user_id)
            else:
                return

        self.queue_update(event.guild.id, event.config)
예제 #2
0
 def on_message_create(self, event):
     Message.from_disco_message(event.message)
예제 #3
0
 def command_backfill_message(self, event, channel, message):
     channel = self.state.channels.get(channel)
     Message.from_disco_message(channel.get_message(message))
     return event.msg.reply(':ok_hand: backfilled')
예제 #4
0
 def on_message_create(self, event):
     is_tag = event.message.id in self.tag_messages
     if is_tag:
         self.tag_messages.remove(event.message.id)
     Message.from_disco_message(event.message, is_tag)
예제 #5
0
 def command_backfill_message(self, event, channel, message):
     channel = self.state.channels.get(channel)
     Message.from_disco_message(channel.get_message(message))
     raise CommandSuccess('Backfill Complete')
예제 #6
0
파일: sql.py 프로젝트: DeJayDev/speedboat
 def on_message_create(self, event):
     if event.message.author.bot:
         return
     Message.from_disco_message(event.message)