【问题标题】:Bot executing the same command twice机器人两次执行相同的命令
【发布时间】:2019-12-14 11:20:56
【问题描述】:

我正在使用重写制作一个不和谐的机器人,但是当我的命令运行时,它会发送两次消息 100% 没有其他调用来发送该消息,并且它只是第一条消息(等等,我正在收集数据),它被发送了两次。 这是命令的代码:

    @bot.command()
    async def testcmd(ctx):
      print("called")
      msgtemp = await ctx.message.channel.send("Hold on, I'm gathering the data")
      print("sent")
      time.sleep(3)
      await msgtemp.delete()
      with open("fileofthings.txt") as fl:
        await ctx.send(fl.read())

【问题讨论】:

  • 你有on_message 听众吗?
  • 提供更多代码
  • @PatrickHaugh 我没有或不需要,因为我正在使用 discord.ext.commands
  • @jerseyetr 我不想分享它,但我 100% 对函数的唯一引用是 @bot.command() 奇怪的是,只有第一条消息,(等等,我'正在收集数据)被发送两次。

标签: python-3.x discord discord.py


【解决方案1】:

我的机器人两次发送响应时遇到了同样的问题,这个特定命令是否会发生这种情况,或者其他命令也会发生这种情况。

我的理论是您正在运行 2 个版本的机器人,这意味着您会收到 2 条消息。我开发了一个关机命令,以防再次发生这种情况

如果您需要,这是我的关机命令代码。

@commands.command()
  async def shutdown(self,ctx):
    if ctx.message.author.id == OWNERID: #replace OWNERID with your user id
      print("shutdown")
      try:
        await self.bot.logout()
      except:
        print("EnvironmentError")
        self.bot.clear()
    else:
      await ctx.send("You do not own this bot!")

【讨论】:

  • Owner ID 和 Client ID 一样吗?
  • @JohnnyApplesauce OWNERID 是任何人的用户 ID,客户端 ID 是机器人的用户 ID
【解决方案2】:

有同样的问题,它真的把我逼疯了。问题可能是您正在从多个设备运行相同的机器人文件,或者您正在使用同一设备多次运行它。通过以下方法解决了我的问题:

  • 在您的设备中打开任务管理器
  • 点击“更多详情”
  • 在进程选项卡中,搜索“python 3.9(或您当前使用的任何版本)”,然后单击它并单击“结束任务”。

希望这能解决您的问题。

【讨论】:

    猜你喜欢
    • 2020-07-08
    • 2021-06-13
    • 2021-10-23
    • 1970-01-01
    • 2014-01-27
    • 2018-04-10
    • 2014-03-02
    • 2021-01-09
    • 2019-01-03
    相关资源
    最近更新 更多