带有 args 的命令在 discord.js v12 中不起作用

时间:2021-02-11 12:22:34

标签: javascript node.js discord.js

我想做的是让命令像这样工作:/changeicon (server id here)

我的代码:

client.on("message", message => { 
    if(!message.author.id === config.ownerID) return;
    if(message.content === '/changeicon'){
        var guild = client.guilds.cache.get(args[0]);
        guild.setIcon('./icon.jpg')
}})

这不起作用,它只是不运行命令,没有任何反应,没有崩溃,也没有错误日志。

1 个答案:

答案 0 :(得分:0)

这有很多问题:

  1. 你刚刚把 message.author.id 变成了一个布尔值,所以这就好像你在检查 config.ownerID 是否等于 false

  2. 您正在检查消息内容是否与“/changeicon”完全相同,如果消息内容为 /changeicon 123456765624 则无效

  3. 您没有说明如何/何时创建 args 变量,因此很难为您提供帮助。 如果它是一个字符串,那么您将获得该字符串的第一个字符。

  4. 您使用的 client.guilds.cache.get( 仅在公会被缓存时才有效(如果自上次重启机器人后该公会收到任何消息) 使用client.guilds.fetch("id")

  5. 您没有等待用于获取公会的函数。因此,它返回一个承诺而不是公会对象。

    client.on("message", message => {
        if(message.author.id !== config.ownerID) return;
        if(message.content.startsWith('/changeicon ')){
            var guild = await client.guilds.fetch(args[0]);
            guild.setIcon('./icon.jpg')
        }
    })