目前我正在为服务器开发一个不和谐的机器人,需要实现一个员工应用程序命令,例如!staff-application
. 我正在尝试在 dms 中制作它,以便机器人 dms 问题并且用户回答它。依此类推,直到它将应用程序保存在服务器上的通道中。我该怎么做?
2212 次
1 回答
3
您可以使用Client.wait_for()函数来等待消息。
这是一个循环问题列表的命令示例(请注意,在那里短暂睡眠被黑了,可能值得研究使用适当的异步循环)。
q_list = [
'What is your favorite color?',
'Is the Sky Blue?',
'Am I the best bot ever?'
]
a_list = []
@client.command(aliases=['staff-application'])
async def staff_application(ctx):
a_list = []
submit_channel = client.get_channel(<your channel id>)
channel = await ctx.author.create_dm()
def check(m):
return m.content is not None and m.channel == channel
for question in q_list:
sleep(.5)
await channel.send(question)
msg = await client.wait_for('message', check=check)
a_list.append(msg.content)
submit_wait = True
while submit_wait:
await channel.send('End of questions - "submit" to finish')
msg = await client.wait_for('message', check=check)
if "submit" in msg.content.lower():
submit_wait = False
answers = "\n".join(f'{a}. {b}' for a, b in enumerate(a_list, 1))
submit_msg = f'Application from {msg.author} \nThe answers are:\n{answers}'
await submit_channel.send(submit_msg)
结果:
于 2020-04-28T13:51:13.903 回答