当前位置: 首页 > 知识库问答 >
问题:

discord.js发送DM以响应用户的斜杠命令

卫深
2023-03-14

当用户使用一个新的不和谐斜杠命令时,我正试图从我们的不和谐机器人发送一个DM给他们。

代码在下面。Discord文档说`Interaction.Member应该是Discord GuildMember,但是,下面的代码给了我以下错误:

TypeError:Interaction.Member.Send不是函数

我可以从data字段调用其他本地函数,但一直无法弄清楚如何将用户DM回来。我假设我做错了什么(根据错误),但我无法从slash命令回调中找出DM用户的方法。

client.ws.on("INTERACTION_CREATE", async (interaction) => {
    const command = interaction.data.name.toLowerCase();
    const args = interaction.data.options;

    if (command == "testing") {
        client.api.interactions(interaction.id, interaction.token).callback.post({
            data: {
                type: 2,
                data: interaction.member.send("hello").catch(console.error),
            },
        });
    }
});

编辑:在Jakye的帮助下最终解决方案。注意,我不得不使用“fetch”而不是“get”,因为get总是返回一个未定义的用户。

if (command == 'testing') {
  client.users.fetch(interaction.member.user.id)
    .then(user => user.send("hello").catch(console.error))
    .catch(console.error);

  client.api.interactions(interaction.id, interaction.token).callback.post({
    data: {
      type: 2,
    }
  });
}

共有1个答案

景仲渊
2023-03-14

交互数据直接来自Discord的API,因此interaction.member将是一个对象。

member: {
    user: {
      username: 'Username',
      public_flags: 0,
      id: '0',
      discriminator: '0000',
      avatar: ''
    },
    roles: [],
    premium_since: null,
    permissions: '0',
    pending: false,
    nick: null,
    mute: false,
    joined_at: '2020-12-26T19:10:54.943000+00:00',
    is_pending: false,
    deaf: false
  }

您必须手动获取成员,要么从缓存中获取成员,要么从API中获取成员。

const user = client.users.cache.get(interaction.member.user.id);
user.send("Hello").catch(console.error);
client.ws.on("INTERACTION_CREATE", async interaction => {
    const guild = client.guilds.cache.get(interaction.guild_id);
    const user = client.users.cache.get(interaction.member.user.id);

    user.send(`hello, you used the ${interaction.data.name.toLowerCase()} command in ${guild.name}`).catch(console.error);
});
 类似资料:
  • 我正在使用discord.js和WOKCommands来使用斜杠命令,但是当在discord中输入时,它给我一个错误“无效的交互应用程序命令” 下面是该命令的代码: 仅当我也需要显示主脚本的代码时,该命令的代码才是命令的代码。我会这样做的。

  • 如何使 slack 解析提及为指向用户的链接而不是明文。我一直在阅读有关消息格式的松弛文档,但仍然没有弄清楚。以下是我现在得到的一个例子:

  • 我正在为我的机器人创建一个斜杠命令。所以我试了一下 这工作得很好。 所以我尝试用它发送一个嵌入,并尝试下面的(2)个代码 而且 但这些都没用。 那么我做错了什么? 或者,我如何发送带斜杠的嵌入命令? 编辑:这是我定义的方式

  • 我正在使用discord.js创建一个discord bot,我想执行如下命令: 前缀为。是消息内容,用户位于命令的末尾。此命令只向标记用户发送一条直接消息。如何重新创建这样的命令?

  • 本文向大家介绍Python中的左斜杠、右斜杠(正斜杠和反斜杠),包括了Python中的左斜杠、右斜杠(正斜杠和反斜杠)的使用技巧和注意事项,需要的朋友参考一下 首先,"/"左倾斜是正斜杠,"\"右倾斜是反斜杠,可以记为:除号是正斜杠一般来说对于目录分隔符,Unix和Web用正斜杠/,Windows用反斜杠,但是现在Windows (一)目录中的斜杠们 python读文件需要输入的目录参数,列出以下