【问题标题】:How to make a Discord bot activate itself?如何让 Discord 机器人自行激活?
【发布时间】:2021-04-15 18:04:00
【问题描述】:

抱歉,措辞奇怪,我不太确定如何描述我的问题,但我会尽力而为。我正在尝试在我的不和谐机器人中创建一个 sudo 命令例如,我正在尝试创建它以便我可以激活我的 #clear 命令。但是,我的机器人只是写了#clear,并且该命令不起作用。有没有办法让机器人使用#clear?很抱歉措辞奇怪,如果无法阅读,我可以尝试重写。

@commands.command()
async def sudo(self, ctx, *, substance):
    """Get the bot to say something for you."""
    await ctx.send(f"{substance}")

【问题讨论】:

    标签: python discord discord.py sudo


    【解决方案1】:

    (我第一次误解了你的问题。)

    self_bot 的文档说明如下:

    如果为 True,机器人将只听自己调用的命令,而不是忽略自己。如果为 False(默认值),则机器人将忽略自身。这一旦初始化就无法更改。

    这意味着这是让机器人听自己的唯一“简单”方法。但是,正如您所看到的,这使得它不再听普通用户的声音,所以这不是您想要做的(因为那样您就不能再使用您的机器人了)。

    您可以做的一件事是从发送的消息(on_message)中手动解析命令,然后查找与其匹配的命令。这将导致您没有任何ctx 传递给它的复杂性,因此它仅适用于不使用ctx 属性的命令,而message 没有。

    【讨论】:

    • 由于某种原因,这似乎对我不起作用。 This 发生了什么事。 (它没有响应)
    • 我认为机器人本身会包含在其中,但显然没有。我已经编辑了我的答案,但它可能不是你会喜欢的。我能问一下为什么你希望你的机器人专门响应自己而不是自己调用命令吗?
    • 我正在研究一种远程使用命令的方法,例如,从服务器 A 在服务器 B 中执行。
    【解决方案2】:

    在您的代码中,您可能会检查命令是由谁发送的,是用户还是机器人。这可能会导致机器人忽略自身而只听用户。

    因此,如果消息的作者是机器人,我建议您检查是否有任何语句不返回任何内容(忽略命令)。编辑:您可能可以在命令处理程序中找到它(将 args 和命令分开的地方)。

    【讨论】:

      猜你喜欢
      • 2021-09-09
      • 2016-03-02
      • 1970-01-01
      • 2021-03-14
      • 2020-07-29
      • 1970-01-01
      • 2021-05-24
      • 2018-12-17
      • 2020-12-27
      相关资源
      最近更新 更多