我正在Discord上制作倒计时机器人,但需要您的帮助。我要这样做,以便您可以用“; time”更新剩余的时间,并且当倒数达到零时,它也会自动发送一条消息。 以下是我当前的代码:
from discord.ext import commands
import discord
import time
import asyncio
Client = commands.Bot(commands.when_mentioned_or('...'))
bot = commands.Bot(command_prefix=";", status=discord.Status.idle, activity=discord.Game(name="Counting"))
releasetime = 10
countdowndone = False
while releasetime >0:
time.sleep(1)
print("a")
releasetime -=1
if releasetime <= 0:
print("Countdown finished")
countdowndone = True
@bot.command(pass_context=True)
async def time(ctx):
global releasetime
await bot.say("MineSaga will be up in" 'releasetime' "seconds.")
@bot.event
async def on_ready():
print("Bot ready")
await bot.change_presence(game=discord.Game(name=";time", type=1))
@bot.command(pass_context=True)
async def ping(ctx):
await bot.say(":ping_pong: Pong!")
请通过重写代码或告诉我提示来提供帮助。
答案 0 :(得分:1)
正如Dextication所说,在此处使用while将阻止整个机器人。您需要在后台更新计时器。文档提供了example上的设置方法。
然后,我建议您使用一个类来创建您的机器人,并将更新后的计时器保留在其属性之一(例如self.timer
)中,该命令也被定义为此类中的方法(或外部齿轮)这样便可以访问self.timer
并将其添加到命令的答案中。