我正在尝试制作一个等待用户消息的不和谐机器人,如果提到三个标签,它会给出滴答反应
Posted
技术标签:
【中文标题】我正在尝试制作一个等待用户消息的不和谐机器人,如果提到三个标签,它会给出滴答反应【英文标题】:I am tring to make a discord bot that wait for the user message and if three tags are mentioned it give tick reaction 【发布时间】:2020-12-11 09:45:03 【问题描述】:当这么多人同时输入时,我的机器人会跳过一些消息
这是我的一些代码
while True:
m=await bot.wait_for('message',check=lambda message: message.channel==ctx.message.channel and message.author!=bot.user)
tags =m.mentions
if len(tags) >= 3:
await m.add_reaction("✅")
else:
await m.add_reaction("❌")```
【问题讨论】:
欢迎来到 SO。请阅读***.com/help/mcve 并编辑您的问题 【参考方案1】:您可以使用on_message
事件来捕获每条 消息,然后用它做您喜欢的事情。这比等待消息和执行代码要好,因为这样更快。缺点是通道必须是硬编码的或使用全局变量。或者,您可以在函数中重新创建整个命令(虽然我不知道这是否有任何其他含义)。
@bot.event
async def on_message(message):
if message.channel == bot.get_channel(CHANNEL_ID_HERE_AS_INT):
tags = message.mentions
if len(tags) >= 3:
await message.add_reaction("✅")
else:
await message.add_reaction("❌")
【讨论】:
如何在我的代码中使用 on_message ..i hv gievn 我的代码作为答案,请参阅【参考方案2】:感谢您的回答,但我如何在此处使用 on_message
await ctx.send( '__**Registrations Open**__ \n<@&711760180848885870>')
teamlist=[]
messlist=[]
while True:
m=await bot.wait_for('message',check=lambda message: message.channel==ctx.message.channel and message.author!=bot.user)
tags =m.mentions
if len(tags) >= 3:
await m.add_reaction("✅")
else:
await m.add_reaction("❌")
continue
messlist.append(m)
if len(messlist)==22:
break
for m in messlist:
role=get(m.author.guild.roles , name="IDP-7pm")
await m.author.add_roles(role)
strr=m.content
n=strr.find("\n")
strr=strr[:n]
n=strr.find(":")
if n==-1:
n=strr.find("-")
if n!=-1:
strr =strr[n+1:]
print(strr)
for s in strr:
if s.isalpha() or s.isnumeric():
break
else:
strr =strr[1:]
teamlist.append(strr)
await ctx.send( '__**Registrations Closed**__ \n<@&711760180848885870>')
await ch.send(f"```Newlist```")
print(Newlist)```
【讨论】:
你不能。它必须是它自己的功能。如果你能弄清楚如何将所有这些放在一个单独的函数中并在它自己的线程中调用它(所以 while 循环不会等待它完成),那么它会运行得更快。 我在 2-3 周内一直在研究它,但仍然无法弄清楚......你能不能给我一些提示......如果你能帮忙,我会很高兴以上是关于我正在尝试制作一个等待用户消息的不和谐机器人,如果提到三个标签,它会给出滴答反应的主要内容,如果未能解决你的问题,请参考以下文章
我想制作一个阅读消息的不和谐黑名单机器人,但我不能让他阅读消息