【问题标题】:Discord code is running multiple times for no reasonDiscord 代码无故运行多次
【发布时间】:2019-01-29 09:41:41
【问题描述】:

所以我有这段代码在不和谐机器人上运行,它应该重复用户在命令后所说的话。它这样做,但在通过该脚本总共运行 8 次后又重复了 7 次。谁能发现为什么会发生这种情况?

注意:实际运行的代码从 elif 开始,但我将所有内容都放入其中以防万一之前的东西弄乱了它。

@Client.event 
async def on_message(message):
  if message.content == "s!ping":
    userID = message.author.id
    Client.send_message(message.channel, "<@%s>" % (userID))
  elif message.content.startswith == "s!say":
    args = message.content.split(" ")
    Client.send_message(message.channel, "%s" % (args[1:]))

Image to show test input and output

【问题讨论】:

  • 您可以尝试添加if message.author == Client.user: return 吗?另外,您使用的是什么版本的discord.py
  • 所以我在 python 3.6.1 中使用 repli,我刚刚导入了 discord 库,我不知道如何检查它的版本。我会试试你的建议,谢谢你的帮助
  • 您可以使用import discord; print(discord.__version__)查看版本。我问的原因是因为discord.py 的现代发行版应该要求你await 那些Client.send_message(message.channel, "&lt;@%s&gt;" % (userID)) 调用
  • 我使用的版本是0.16.12

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


【解决方案1】:

我是 Repl.it 的首席执行官。我认为这可能是我们的服务扩展的一个错误,我们可能会运行您的服务器的多个实例。我们很快就会解决这个问题。同时,我认为其他一些 Repl.it 用户对此进行了修复。加入我们的 Discord,那里有很多机器人开发人员可以帮助您解决这个问题https://discord.gg/xa6S23

【讨论】:

  • 感谢您的回答,希望修复对我有用。
【解决方案2】:

在您的代码中,您发送了一个列表。 拆分后尝试加入列表(将返回一个字符串),然后发送。 像下面这样的代码

elif message.content.startswith == "s!say":
    args = message.content.split(" ")
    out = " ".join(args[1:]) # concat the message without the "s!say"
    Client.send_message(message.channel, out)

【讨论】:

  • 不幸的是,这不起作用,但我确实有另一个观察结果。它将首先发送 5 条消息,然后在稍作延迟后发送最后 3 条消息。也许这将有助于找出问题所在。我也尝试过以小的方式更改代码,但我找不到它的工作方式
猜你喜欢
  • 2021-07-13
  • 2012-02-23
  • 1970-01-01
  • 2021-06-28
  • 1970-01-01
  • 2014-12-18
  • 1970-01-01
  • 2020-09-29
  • 1970-01-01
相关资源
最近更新 更多