在编码Discord机器人时,我想创建一个重复@mention用户的函数,直到他们用另一个命令(override
)作为响应。
global boolean
boolean = False
@bot.command(pass_context = True)
async def wakingTheDead(ctx, user:discord.Member):
global owner
owner = ctx.message.author
global target
target = user
print("reassigned logged")
msg = 'Calling {}!!!'.format(user.mention)
while boolean == False:
await ctx.send(msg)
await asyncio.sleep(3)
@bot.command(pass_context = True)
async def override(ctx):
if ctx.message.author == owner or ctx.message.author == target:
boolean = True
await ctx.send("```css\n Overriding...```")
else:
await ctx.send("```prolog\n You're Not Authorised To Override This!```")
使用此代码,override
可以正常工作,但布尔值的更改似乎不会影响wakingTheDead
中的while循环。
同样,我真正想做的是拥有一个可以跟踪不同服务器的所有消息并使用它们做事的机器人。
例如,当用户最终在同一服务器上响应时,!wakingTheDead命令将停止@mentioning用户。
我知道这可能是你见过的最疯狂的代码,但是嘿,如果没有指导,我无法改进:)