虽然声明是heroku discord bot在一段时间后停止工作

时间:2020-07-02 17:44:23

标签: python heroku while-loop discord.py

我做了我的第一个discord bot,它的作用是监听名为T[1]的命令并清除其执行通​​道中的所有消息。

但是,就像我其他朋友的机器人一样,该机器人功能失调了。这可能是Heroku,但我对此表示怀疑吗?我可能需要一个break语句,但是不确定。我也试图在多个服务器上运行它,因此我希望布尔变量为每个名称具有服务器ID。

由于不起作用,我的意思是它将不再删除邮件,并且在运行我认为的命令后向您发送垃圾邮件时会出现故障。它可能与+purge变量有关。

isActive

1 个答案:

答案 0 :(得分:0)

  • await ctx.channel.purge(limit=999)不需要放入while循环,因为该函数已经使用了自己的循环来删除
  • 自从您将布尔值isActive声明为全局变量以来,布尔值的状态保存在范围之外,从而导致该函数每调用一次便运行一次
  • 您可以对isActive布尔值的概念进行分类,因为函数下面的代码在被调用后会自动变为活动状态。
  • 根据您的情况,该函数应该只有几行(并且在任何行会中仍然可以正常使用):
@bot.command(pass_context=True)
@has_role("Guild Master")
async def purge(ctx):
    await ctx.channel.purge(limit=999)

编辑:如果我们要删除频道中发送的每条消息,可以使用on_message侦听器,如下所示:

@commands.Cog.listener()
async def on_message(message):
    if message.channel == noMessageChannel:
         await message.delete()