discord.py - 如何将 3 个 on_message 函数组合成 1 个 on_message 函数
问题描述
基本上我需要将这 3 个 on_message 函数组合成 1 个 on_message 函数,因为在 discord.py 机器人中不能有超过 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)
解决方案
您只需将所有内容加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)
推荐阅读
- webpack - 从捆绑包中删除未声明副作用的大依赖项
- javascript - 有没有办法通过 UMAP iframe 中的 CSS 元素进行选择?
- swift - 为什么使用 ARkit 和 RealityKit 会出现这么多调试错误?
- ios - 在全框架架构项目中缺少方法时如何出现链接错误?
- r - R - 折叠观察并基于多列创建新列
- docker - Gitlab Container Registry 缺少图像标签
- ffmpeg - 如何正确转换 mp4 h265 文件中的 rtsp 数据包
- javascript - 如何在 popstate() 事件/获取上利用 Back-Forward Cache
- javascript - StencilJS 检查未命名的插槽是否为空
- clickhouse - 如何更改/更改 Clickhouse 中的物化视图 TTL?