如何将 3 个 on_message 函数组合成 1 个 on_message 函数

时间:2021-04-29 14:23:15

标签: discord.py

基本上我需要将这 3 个 on_message 函数组合成 1 个 on_message 函数,因为在 discord.py bot 中不能有超过 1 个 on_message 函数。这是我的代码:

@client.event
async def on_message(message):
    if message.content.startswith('Jason derulo'):
        await message.channel.send('Wiggle wiggle wiggle')
    await client.process_commands(message)
    
@client.event
async def on_message(message):
    if message.content.startswith('fast'):
        await message.channel.send('She a runner she a track star')
    await client.process_commands(message)

@client.event 
async def on_message(message):
    await client.process_commands(message)
    if message.author.bot:
        return
    for badword in file:
        if badword in message.content.lower():
            await message.delete()
            warnMessage = f"Hey {message.author.mention}! Don't say that!"
            await message.channel.send(warnMessage, delete_after=5.0)
            print(f"{message.author.name} tried saying: {badword}")
            channel = client.get_channel(836232733126426666)
            
            embed = discord.Embed(title=f"Someone tried to swear!", colour=0x2D2D2D)
            embed.add_field(name="Person who tried to swear:", value=f"{message.author.name}", inline=False)
            embed.add_field(name="What they tried to say:", value=f"{badword}", inline=False)
            
            await channel.send(embed=embed)
            return
            await client.process_commands(message)

1 个答案:

答案 0 :(得分:1)

您只需将所有 if 相加,但只在底部使用一个 await client.process_commands(message)

@client.event
async def on_message(message):
    if message.author.bot:
        return
    for badword in file:
        if badword in message.content.lower():
            await message.delete()
            warnMessage = f"Hey {message.author.mention}! Don't say that!"
            await message.channel.send(warnMessage, delete_after=5.0)
            print(f"{message.author.name} tried saying: {badword}")
            channel = client.get_channel(836232733126426666)
            
            embed = discord.Embed(title=f"Someone tried to swear!", colour=0x2D2D2D)
            embed.add_field(name="Person who tried to swear:", value=f"{message.author.name}", inline=False)
            embed.add_field(name="What they tried to say:", value=f"{badword}", inline=False)
            
            await channel.send(embed=embed)
            return
            await client.process_commands(message)
    if message.content.startswith('Jason derulo'):
        await message.channel.send('Wiggle wiggle wiggle')
    if message.content.startswith('fast'):
        await message.channel.send('She a runner she a track star')
    await client.process_commands(message)