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
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)
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
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)
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)
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?')