【发布时间】:2021-09-20 05:41:21
【问题描述】:
我正在尝试创建一些应用程序机器人。我需要在通用渠道中触发机器人,然后在与申请人的私人 DM 渠道中继续申请流程。
我的问题是:机器人只能定义一个 on_message 函数。我发现每次检查 on_message 是否由来自 DM 通道和通用通道的消息触发非常复杂(且效率低下)。此外,很难跟踪申请人的答案。我想检查以下是否可行:让机器人像往常一样响应来自通用频道的消息。如果收到申请提示,则启动一个新的子进程(或机器人?),分别处理与申请人的 DM。
以上可能吗?如果没有,是否有更好的方法来处理这个问题?
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.channel.type==discord.ChannelType.private:
await dm_channel.send("Whats your age?") ## Question 2
elif message.channel.type == discord.ChannelType.text:
if message.content.startswith('$h'):
member = message.author
if "apply" in message.content:
await startApply(member)
else:
await message.channel.send('Hello!')
# await message.reply('Hello!', mention_author=True)
async def startApply(member):
dm_channel = await member.create_dm()
await dm_channel.send("Whats your name?") ## Question 1
我现在有上面的代码。我希望 startApply 函数触发一个新的机器人/子进程来处理与申请人的 DM。
【问题讨论】:
-
你应该考虑使用
wait_for
标签: asynchronous discord discord.py