首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用discord.js向用户发送DM?

如何使用discord.js向用户发送DM?
EN

Stack Overflow用户
提问于 2020-05-20 00:59:39
回答 2查看 127关注 0票数 0

我已经把一个愚蠢的机器人放在一起,当提示时,它将加入一个声音频道,并播放一个戈登·拉姆齐的剪辑。经过一些尝试和错误之后,语音功能工作得很好。目前,我正在尝试让它,DM,一个列表的mp3是可用的,但我遇到了一个错误。我认为我对DM的if语句用户正在与我的逻辑交互,在语音信道中播放一个随机的mp3。我对这件事还是很陌生的。

代码语言:javascript
复制
client.on('message', async message => {
if(message.member.voice.channel && message.content === `${prefix}list`) {
    message.author.send('placeholder');
}
if (message.member.voice.channel && message.content === `${prefix}gordon`) {
    const connection = await message.member.voice.channel.join();
    const dispatcher = connection.play(mp3[Math.floor(Math.random() * mp3.length)]);
    dispatcher.on('start', () => {
        console.log('Audio is now playing!\n Deleting command in chat.');
        message.delete();
    });
    dispatcher.on('finish', () => {
        console.log('Audio has finished playing!');
        connection.disconnect();
    });
    dispatcher.on('error', console.error);
}});

它成功地发送了DM,但是它有错误。

代码语言:javascript
复制
```(node:14168) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'voice' of null

在客户那里。(c:\Users\Havok\Desktop\GordonBot\index.js:53:20)

在Client.emit (events.js:310:20)

在(c:\Users\Havok\Desktop\GordonBot\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14) MessageCreateAction.handle

在Object.module.exports as MESSAGE_CREATE

在(c:\Users\Havok\Desktop\GordonBot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:386:31) WebSocketManager.handlePacket

在(c:\Users\Havok\Desktop\GordonBot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:436:22) WebSocketShard.onPacket

在(c:\Users\Havok\Desktop\GordonBot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:293:10) WebSocketShard.onMessage

在(c:\Users\Havok\Desktop\GordonBot\node_modules\ws\lib\event-target.js:125:16) WebSocket.onMessage

在WebSocket.emit (events.js:310:20)

在Receiver.receiverOnMessage

代码语言:javascript
复制
```javascript

(节点:14168) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误起源于在异步函数中抛出而不带catch块,或者拒绝使用.catch()处理的承诺。若要在未处理的允诺拒绝时终止节点进程,请使用CLI标志--unhandled-rejections=strict (请参阅https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝证: 1)

(节点:14168) DEP0018 DeprecationWarning:未处理的承诺拒绝被取消。在未来,承诺不处理的拒绝将使用非零退出代码终止Node.js进程。

代码语言:javascript
复制
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-20 01:22:59

当机器人接收到DM消息时,message.member将是null (因为它不能是公会成员;它不是以公会的形式发送的)。

在尝试使用message.member.voice或播放音乐之前,先检查消息是否以公会的形式发送:

代码语言:javascript
复制
client.on('message', async message => {
    if (!message.guild) return;
    // rest of code...
})
票数 0
EN

Stack Overflow用户

发布于 2020-05-20 02:07:36

dm用户

message.user.send("msg");

代码语言:javascript
复制
client.on('message', async message => {
if(message.member.voice.channel && message.content === `${prefix}list`) {
messsge.user.send("Message");
}
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61903330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档