我搜索了它,并得到了带有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();
});
}
});
但是它不起作用
答案 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();
});
}
});