【问题标题】:How to send a Greeting Message with a Discord Bot - NodeJS如何使用 Discord Bot 发送问候消息 - NodeJS
【发布时间】:2019-08-23 13:50:42
【问题描述】:

我正在尝试开发一个 Discord 机器人,我希望它在有人添加到服务器时发送问候消息。 我收到此错误:

/perso-workspace/discordtest/index.js:31
guild.defaultChannel.send(`Bienvenue ${member.user} sur mon serveur Discord !  `).catch(console.error);
                         ^

TypeError: Cannot read property 'send' of undefined
    at Client.bot.on.member (/home/spoisson/Documents/perso-workspace/discordtest/index.js:31:26)
    at Client.emit (events.js:189:13)
    at Guild._addMember (/home/spoisson/Documents/perso-workspace/discordtest/node_modules/discord.js/src/structures/Guild.js:1192:19)
    at GuildMemberAddHandler.handle (/home/spoisson/Documents/perso-workspace/discordtest/node_modules/discord.js/src/client/websocket/packets/handlers/GuildMemberAdd.js:12:13)
    at WebSocketPacketManager.handle (/home/spoisson/Documents/perso-workspace/discordtest/node_modules/discord.js/src/client/websocket/packets/WebSocketPacketManager.js:103:65)
    at WebSocketConnection.onPacket (/home/spoisson/Documents/perso-workspace/discordtest/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:333:35)
    at WebSocketConnection.onMessage (/home/spoisson/Documents/perso-workspace/discordtest/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:296:17)
    at WebSocket.onMessage (/home/spoisson/Documents/perso-workspace/discordtest/node_modules/ws/lib/event-target.js:120:16)
    at WebSocket.emit (events.js:189:13)
    at Receiver._receiver.onmessage (/home/spoisson/Documents/perso-workspace/discordtest/node_modules/ws/lib/websocket.js:137:47)

这是我的代码:

const Discord = require('discord.js')
const bot = new Discord.Client()


bot.on('ready', function(){
    console.log('I am ready to learn !')
})

bot.on('message', function (message){
    if (message.content === '!ping') {
        message.channel.send('Pong !')
    }
})

bot.on("guildMemberAdd", member => {
    let guild = member.guild;
    console.log('Guild is ' + guild + ' and member is ' + member.user)
    guild.defaultChannel.send(`Bienvenue ${member.user} sur mon serveur Discord !  `).catch(console.error);
});

bot.login('i_set_my_token_here')

我已经在 YouTube 或其他任何地方尝试过不同的教程,但我不明白我与正在观看的人之间的区别。 第一个命令( !ping )运行良好。我设法为我的机器人设置了一个活动。

我看到 defaultChannel 已被弃用,但我没有找到任何可以匹配我想要的东西。

谁能指导我回答/纠正这个错误?

【问题讨论】:

    标签: node.js intellij-idea discord discord.js


    【解决方案1】:

    新的不和谐服务器不再有默认频道,因此Guild#defaultChannel 已被弃用,并为较新的公会返回未定义。

    如果您希望机器人仅按名称查找频道,您可以使用:

    guild.channels.find(channel => channel.name === 'general-chat');
    

    您还可以遍历可能的频道名称列表以允许更多频道,或者您可以有一个设置日志频道的配置。

    【讨论】:

    • 您好,感谢您的提示!我发现我可以通过在我的 Discord Appearence 上启用开发人员模式来获取频道 ID。我做了同样的事情,但使用了 channel.id 并且它有效!这是我更改的内容:bot.on("guildMemberAdd", member => { let guildChannel = member.guild.channels.find(channel => channel.id === '562256947764527115'); if(!guildChannel) { return } if(guildChannel.type != "text"){ return } guildChannel.send('Bienvenue ${member.user} sur mon serveur Discord !').catch(console.error) });
    猜你喜欢
    • 2018-01-22
    • 2020-08-31
    • 2020-08-16
    • 2020-12-01
    • 2021-03-02
    • 2021-01-12
    • 2021-06-05
    • 2020-12-03
    • 2021-09-17
    相关资源
    最近更新 更多