您可以在控制台日志或不和谐频道中回答dms的漫游器

时间:2018-11-30 10:21:29

标签: discord readline discord.js

我搜索了它,并得到了带有readline的代码,它看起来像这样:

const Disc = require('discord.js');
const client = new Disc.Client();
const token = 'token' 
const readline = require('readline');

client.login(token);

client.on('message', function(message){
    if(message.channel.type === 'dm'){
        console.log("[" + message.author.username + "]: " + message.content) 


        const rl = readline.createInterface({
            input: process.stdin,
            output: process.stdout
        });

        rl.question('REPLY TO ' + message.author.username + ': ', (answer) => {
            message.author.send(`${answer}`);
            rl.close();
        });
     }
 });

但是它不起作用

1 个答案:

答案 0 :(得分:0)

这是我最近刚做的一个主题,因此我将带您逐步了解它,并为您提供一些代码。

首先,我想说的是您发帖时要提出的明确问题。从表面上看,您要求一个将dms登录到控制台或对其进行响应的机器人。我将回答两个问题。

检查DM的最简单方法是查看消息通道类型是否为DM。检查here以获得有关频道类别的更多信息。您可以通过以下方法检查某个频道是否为特定类型:

if (message.channel.type === 'dm'){ } // change dm to the type you want

这将必须包含在on message函数中,所以现在,如果您一直在遵循,代码将如下所示:

bot.on('message', async message => {
    if (message.channel.type === 'dm'){ }
});

从那里开始,只需将代码添加到if语句的内部。您总是希望在其中包含return语句,以防万一没有发生,因此它不会尝试在通道中做任何事情。

对于您想要的内容,这将把DM登录到控制台并进行回复(如果它等于特定消息)。

bot.on('message', async message => {
    if (message.channel.type === 'dm'){ 
        console.log(message.content);
        if(message.content === "something"){
            return await message.channel.send("Hi!");
        }
        return;
    }
});

这应该做您想要的,如果您有任何疑问,请在此处评论,我会尽快回复:)

编辑:

bot.on('message', async message => {
    if (message.channel.type === 'dm'){ 
        console.log(`${message.author.username} says: ${message.content}`);
        const rl = readline.createInterface({
            input: process.stdin,
            output: process.stdout
        });

        rl.question(`REPLY TO ${message.author.username}: `, (answer) => {
            message.author.send(`${answer}`);
            rl.close();
        });

    }
});