gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:21:50 26 4
gpt4 key购买 nike

当用户使用新的 Discord 斜杠命令之一时,我试图从我们的 Discord 机器人向用户发送 DM。
代码如下。 Discord 文档说`interaction.member 应该是一个 Discord GuildMember,但是,下面的代码给了我以下错误:
类型错误:interaction.member.send 不是函数
我可以从数据字段调用其他本地函数,但一直无法弄清楚如何回复用户。我假设我做错了什么(根据错误),但我无法从斜杠命令回调中找出用于 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,
}
});
}

最佳答案

交互数据直接来自 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);
});

关于javascript - discord.js 发送 DM 以响应用户的斜杠命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65459079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com