![](/img/trans.png)
[英]How would I make my discord bot say a message in a DIFERENT channel with a command using Hikari
[英]How do I make a bot say a message activated by a variable rather than a reply command?
我正在尝试制作一个Trivia机器人,它具有一个命令,可在30秒内从30-1倒数。 当达到1时,我不知道如何在不和谐的聊天中说些什么。
我已经尝试过浏览API。
questionTimer = 30
#while questionTimer > 1:
#questionTimer = questionTimer - 1
#time.sleep(1)
#print (questionTimer)
我希望当questionTimer = 1时它可以在聊天中说Times up
如果您希望它打印出每个数字,您可以执行以下操作
@client.command()
async def quiz():
seconds = 30
while seconds > 0:
await client.say(seconds)
await asyncio.sleep(1)
seconds-=1
await client.say("Done")
但是,如果您只想等待30秒然后显示一条消息,则可以执行以下操作
@client.command()
async def quiz():
await asyncio.sleep(30)
await client.say("Done")
根据您使用的是Discord.py的重写版本还是旧的异步版本,我建议以下内容:
Discord.py异步(0.16.x):
@client.event
async def on_message(self, message):
if message.content.startswith('!quiz'):
quizMsg = 'Question of the quiz'
msg = await client.say(f"{quizMsg}\n\n{secs}s left !")
secs = 30
while secs > 0:
await asyncio.sleep(1)
await client.edit_message(msg, f"{quizMsg}\n\n{secs}s left !")
secs--
await client.say("Time is up ! The answer was...")
Discord.py重写(1.0.x):
@commands.command(name="quiz", aliases=["q"])
async def quiz():
quizMsg = 'Question of the quiz'
msg = await ctx.send(f"{quizMsg}\n\n{secs}s left !")
secs = 30
while secs > 0:
await asyncio.sleep(1)
await msg.edit(content = f"{quizMsg}\n\n{secs}s left !")
secs--
await ctx.send("Time is up ! The answer was...")
注意两种方法之间的区别
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.