discordjs 机器人的聊天命令
Posted
技术标签:
【中文标题】discordjs 机器人的聊天命令【英文标题】:Chat command for discordjs bot 【发布时间】:2018-09-18 08:18:30 【问题描述】:我正在创建一个不和谐的机器人,将来我会添加更多命令,我只是 不明白参数的使用以及如果有像“说一般(频道)嗨伙计们我是文本(要发送的文本)”这样的空格它将如何工作。它只会向将军发送“hi”,而不是其他任何东西,这是聊天命令的缺点。
const bot = new Discord.Client(disableEveryone: true);
bot.on("ready", async () =>
console.log(`Bot is ready! $bot.user.username`);
try
let link = await bot.generateInvite("[ADMINISTRATOR]");
console.log(link);
catch(e)
console.log(e.stack);
bot.user.setGame('nope nope nope');
);
bot.on("message", async (message) =>
if (message.author.bot) return;
if (!message.content.startsWith(prefix)) return;
let command = message.content.split(" ")[0];
command = command.slice(prefix.length);
const args = message.content.slice(prefix.length).trim().split(/ +/g);
if (command === "ping")
message.channel.send(`Pong! Time took: $Date.now() - message.createdTimestamp ms`);
else
if (command === "say")
message.delete()
let thetext = args[2];
let thechannel = args[1];
bot.channels.find("name",`$thechannel`).sendMessage(`$thetext`)
);
【问题讨论】:
您需要从索引 2 开始为您的文本获取所有字符串,并用空格将它们连接起来。 【参考方案1】:如果我认为你想重复来自用户的消息,你应该试试这个。
我的机器人前缀是R!
我的命令是echo
所以我的信息是
if(command==='echo')
let ec = message.content;
let co = ec.replace("R!echo","");
message.channel.send(co);
希望这对您有所帮助... 如果你需要帮助加入我的服务器 https://discord.gg/Rf3xPMm
【讨论】:
【参考方案2】:所以,如果我理解正确的话,除了该消息仅包含所述消息的第一个单词外,一切正常。发生这种情况是因为您正在抓取 args[2]
,它只抓取了第二个参数(或第二个单词)。为了获得整个消息,您可以这样做:let theText = args.slice(1).join(' ');
。
代码sn-p解释
slice(1)
这样做是删除第一个参数,即文本通道。
join(' ')
这将连接第一个 arg 之后的所有参数。
总之,如果这个人运行了这个命令:say general My message is awesome
。这将是变量:theChannel = 'general'
theMessage = 'My message is awesome'
【讨论】:
以上是关于discordjs 机器人的聊天命令的主要内容,如果未能解决你的问题,请参考以下文章
使用 DiscordJS 的音乐 Discord 机器人无法正常工作
Discord.js v13,@discordjs/voice 播放音乐命令