我需要制造一个Discord机器人,在这里可以制造它,因此“; time”命令说明了直到计时器达到零为止的剩余时间。

时间:2019-01-12 08:52:28

标签: python bots discord discord.py

我正在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!")

请通过重写代码或告诉我提示来提供帮助。

1 个答案:

答案 0 :(得分:1)

正如Dextication所说,在此处使用while将阻止整个机器人。您需要在后台更新计时器。文档提供了example上的设置方法。

然后,我建议您使用一个类来创建您的机器人,并将更新后的计时器保留在其属性之一(例如self.timer)中,该命令也被定义为此类中的方法(或外部齿轮)这样便可以访问self.timer并将其添加到命令的答案中。