[英]Discord.JS function error, “welcome message”
我正在使用“ Discord.JS”為Discord制作機器人,我正在嘗試制作介紹性消息,但出現錯誤“無法讀取未定義的屬性'sendMessage'”
我的歡迎代碼:
var bot = new Discord.Client();
bot.on("guildMemberAdd", member => {
let mem = member.guild
mem.defaultChannel.sendMessage(member.user + " welcome to the server!"); });
有什么幫助嗎?
我相信這樣做的正確方法是按ID或按名稱獲取頻道,因為#general可以不確定,正如安德烈指出的那樣。
一個簡單的方法是讓成員加入和離開:
bot.on('guildMemberAdd', member => {
member.guild.channels.get('channelID').send('**' + member.user.username + '**, has joined the server!');
});
bot.on('guildMemberRemove', member => {
member.guild.channels.get('channelID').send('**' + member.user.username + '**, has left the server');
//
});
轉到用戶設置>外觀>開發人員模式,然后在通道上單擊鼠標右鍵並單擊“副本ID”,以打開開發人員模式。
閱讀Discord.js的工作原理后 , defaultChannel
似乎是用詞不當,因為Discord或其API中不存在這樣的概念:
行會的
#general
TextChannel
實際上, #general
通道可以重命名和刪除,因此defaultChannel
可以是undefined
。 您需要保護對sendMessage
的呼叫:
var bot = new Discord.Client();
bot.on("guildMemberAdd", member => {
let mem = member.guild;
if (mem.defaultChannel) {
mem.defaultChannel.sendMessage(member.user + " welcome to the server!");
} else {
// do something if the #general channel isn't available
}
});
如果我沒記錯的話,不建議使用guild#defaultChannel
和channel#sendMessage
。 (與client#setGame相同),但是可以通過輕松找到頻道來繞開它!
var defaultChannel = member.guild.channels.find( "name", "CHANNEL_NAME" );
然后,您的代碼將最終如下所示:
const discord = require('discord.js');
var bot = new discord.Client();
bot.on(`guildMemberAdd`, member => {
var dC= member.guild.channels.find("name", "CHANNEL_NAME");
/* Using dC for short. */
if (dC) {
dC.send(`${member.username}, welcome to the server!`);
} else {
member.guild.defaultChannel.send(`${member.username}, welcome to the server!`);
}
});
在我的機器人程序中,我使歡迎消息更加簡單。 也許這項工作:
const Discord = require('discord.js');
var bot = new Discord.Client();
bot.on("guildMemberAdd", (member) => {
let channel = bot.channels.get('*CHANNEL_ID*');
channel.send(`Hey ${member.user}, welcome to the server!`);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.