Ejemplo n.º 1
0
    async def on_message(message: discord.Message):
        if message.author == discord_client.user:
            return
        global config_prefix

        content = message.content.lstrip()

        prefixes = (
            '<@%s>' % discord_client.user.id,
            '<@!%s>' % discord_client.user.id)

        if config_prefix is not None:
            if isinstance(config_prefix, (list, tuple)):
                prefixes += tuple(config_prefix)
            elif isinstance(config_prefix, str):
                prefixes += (config_prefix.lower(),)

        if content.lower().startswith(prefixes):  # Checking all messages that start with the prefix.
            prefix = [prefix for prefix in prefixes if content.lower().startswith(prefix)][0]
            command_content = content[len(prefix):].lstrip()
            response = discord_postprocess(
                run_command(
                    DiscordAccountId(str(message.author.id)),
                    command_content,
                    server))

            chunks = split_into_chunks(response.encode('utf-8'), 1024)

            title = command_content.split()[0] if len(command_content.split()) > 0 else 'Empty Message'

            message_obj = DiscordMessage(message.author, chunks, title)

            await message_obj.send(message.channel)
            messages[message_obj.message.id] = message_obj
Ejemplo n.º 2
0
    def emit(self, record: logging.LogRecord):
        try:
            embed = discord.Embed(colour=self._colour_map[record.levelno])
        except:
            embed = discord.Embed(colour=self._colour_map[logging.NOTSET])

        embed.add_field(name=record.name,
                        value=discord_postprocess(record.message),
                        inline=False)
        self._webhook.send(embed=embed)
Ejemplo n.º 3
0
    async def on_message(message: discord.Message):
        if message.guild.id != primary_guild_id:
            return
        if message.author == discord_client.user:
            return
        global config_prefix

        content = message.content.lstrip()

        prefixes = ('<@%s>' % discord_client.user.id,
                    '<@!%s>' % discord_client.user.id)

        if config_prefix is not None:
            if isinstance(config_prefix, (list, tuple)):
                prefixes += tuple(config_prefix)
            elif isinstance(config_prefix, str):
                prefixes += (config_prefix.lower(), )

        if content.lower().startswith(
                prefixes):  # Checking all messages that start with the prefix.
            prefix = [
                prefix for prefix in prefixes
                if content.lower().startswith(prefix)
            ][0]
            command_content = content[len(prefix):].lstrip()
            response = run_command(DiscordAccountId(str(message.author.id)),
                                   command_content, server)

            if isinstance(response, dict):
                params = response
                response = params["response"]
                if "to_be_muted" in params:
                    user_id = int(params["to_be_muted"].discord_id)
                    guild = primary_guild
                    member = guild.get_member(user_id)
                    role = guild.get_role(muted_role_id)
                    if role not in member.roles:
                        await member.add_roles(role)
            response = discord_postprocess(response)

            chunks = split_into_chunks(response.encode('utf-8'), 1024)

            title = command_content.split()[0] if len(
                command_content.split()) > 0 else 'Empty Message'

            message_obj = DiscordMessage(message.author, chunks, title)

            await message_obj.send(message.channel)
            messages[message_obj.message.id] = message_obj
Ejemplo n.º 4
0
    async def on_message(message):
        if message.author == discord_client.user:
            return
        global config_prefix

        content = message.content.lstrip()

        prefixes = (
            '<@%s>' % discord_client.user.id,
            '<@!%s>' % discord_client.user.id)

        if config_prefix is not None:
            if isinstance(config_prefix, (list, tuple)):
                prefixes += tuple(config_prefix)
            else:
                prefixes += (config_prefix.lower(),)

        if content.lower().startswith(prefixes): # Checking all messages that start with the prefix.
            prefix = [prefix for prefix in prefixes if content.lower().startswith(prefix)][0]
            command_content = content[len(prefix):].lstrip()
            response = discord_postprocess(
                process_command(
                    DiscordAccountId(str(message.author.id)),
                    command_content,
                    server,
                    prefixes[0] + ' '))

            chunks = split_into_chunks(response.encode('utf-8'), 1024)
            try:
                embed = discord.Embed(color=int(config["colour"], base=16))
            except Exception as e:
                print_bad("Embed Colour")
                embed = discord.Embed()
                pass
            title = command_content.split()[0] if len(command_content.split()) > 0 else 'Empty Message'
            for i, chunk in enumerate(chunks):
                title = "(cont'd)" if i > 0 else title
                embed.add_field(name=title, value=chunk.decode('utf-8'), inline=False)

            embed.set_thumbnail(url=message.author.avatar_url)
            embed.set_footer(text="This was sent in response to %s's message; you can safely disregard it if that's not you." % message.author.name)

            await message.channel.send(embed=embed)
Ejemplo n.º 5
0
    async def on_message(message):
        if message.author == discord_client.user:
            return

        content = message.content.lstrip()
        prefixes = (
            '<@%s>' % discord_client.user.id,
            '<@!%s>' % discord_client.user.id)

        if content.startswith(prefixes): # Checking all messages that start with the prefix.
            response = discord_postprocess(
                process_command(
                    DiscordAccountId(str(message.author.id)),
                    content[content.index('>') + 1:].lstrip(),
                    server,
                    prefixes[0] + ' '))

            chunks = split_into_chunks(response.encode('utf-8'), 1024)
            embed = discord.Embed(color=0x3b4dff)
            for i, chunk in enumerate(chunks):
                title = "(cont'd)" if i > 0 else 'Response to %s' % message.author.name
                embed.add_field(name=title, value=chunk.decode('utf-8'), inline=False)

            await message.channel.send(embed=embed)
Ejemplo n.º 6
0
 def test_discord_postprocess(self):
     """Tests that messages can be postprocessed for the Discord platform."""
     self.assertEqual(
         discord_postprocess('Hi there!\n\nHow are ya?'),
         'Hi there!\nHow are ya?')