javascript - 如何向特定提及的频道发送消息?
问题描述
我正在尝试创建一个message
在user
特定channel
. 该命令的格式如下:
:send @user #channel
这是我的代码:
let user = message.mentions.users.first().id;
let channell = message.mentions.channels.first()
channel.cache.get(`${channell}`).send(`<@${user}>`);
谢谢!
解决方案
您想要做的第一件事是得到channel
提到的command args
和提到的user
:
const channelID = args[1];
const mentionedUser = message.mentions.members.first();
if(!channelID) return message.reply('You need to provide a channelID!');
if(!mentionedUser) return message.reply(`Please use a proper member mention!`);
const targetChannel = await message.client.channels.fetch(channelID);
为了获得您必须在 Discord 中激活
ID
的 a ,然后您可以右键单击并点击channel
developer mode
target channel
Copy channel ID
或者,您应该能够channel
通过它的名称获得 a:
const targetChannel = guild.channels.cache.find(channel => channel.name === "Name of the channel");
完成后,您现在可以将消息发送到目标频道:
targetChannel.send(`Hello ${mentionedUser.toString()}`);
我使用的原因.toString()
是因为message.mentions.members.first()
返回一个GuildMember
. 如果您查看文档,您会注意到它会.toString()
自动返回用户mention
而不是GuildMember
对象。
推荐阅读
- powershell - 根据 $Attribute 删除 AD 组成员资格
- c# - 使用异步方法返回值时如何返回值。我收到一个错误
- c# - 无法访问 div 值
- vim - 在 Vim 中查找特定字符串使用的突出显示
- ios - 卸载和重新安装应用程序每次都会创建一个新的sqlite文件?iphone上的旧sqlite文件会发生什么?
- javascript - 是否可以重写此 JSON 以通过其字段访问对象?- 给出的例子
- python - UnicodeDecodeError 'utf-8' codec can't decode - using python shapefile reader
- ssis - 无法在 SSIS 中打开 excel 源
- ios - iOS UIKeyboardWillShow 意外触发
- mysql - CENTOS 中的REDMINE INSTALATION (bundle / mysql 错误)