簡體   English   中英

Discord.JS函數錯誤,“歡迎消息”

[英]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#defaultChannelchannel#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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM