这是GLaDOS机器人,Connor RK800机器人和TypicalBot中的一项功能。
通常命令显示如下:
!说#general heck
然后,文字会通过漫游器显示在该频道中。
如果可能的话,我想将此添加到自己的机器人中!
我对say-delete命令有一个简单的代码。我必须添加什么,我要删除什么?
if (command === "say") {
const sayMessage = args.join(" ");
message.delete().catch(O_o => {
// Catch error
});
message.channel.send(sayMessage);
}
谢谢!我真的很感激。
答案 0 :(得分:1)
// making the say command
const sayCommand = `${prefix}say`
// say command
if (message.content.toLowerCase().startsWith(`${sayCommand}`)) {
// declaring args variable
const args = message.content.slice(sayCommand.length).split(/ +/);
// delcaring sayMessage that clears the say command from the say message
let sayMessage = args.join(` `);
// deletes the command message
message.delete();
// bot sends the contents of the command without the say command
message.channel.send(sayMessage)
}
这对我非常有效
答案 1 :(得分:0)
首先,您需要将在这种情况下用于定义参数的代码更改为const channel = args.shift();
,这将返回args []数组中的第一项。
然后,您可以使用message.guild.channels[channel].send(sayMessage);
(我认为)来识别用户想要向其发送消息的频道。
总共,您的代码应为:
if(command === "say") {
const channel = args.shift();
const sayMessage = args.join(" ");
message.delete().catch(O_o=>{});
message.guild.channels[channel].send(sayMessage);
}
由于我现在无法检查此内容,因此不确定是否可以正常工作,但值得一试!如果您希望我可以的话,可以为您进行测试。
编辑: 我测试并修复了代码,希望我写的注释足以说明问题。
const channel = args.shift().slice(2,-1); // this is due to how channel mentions work in discord (they are sent to clients as <#462650628376625169>, this cuts off the first <# and the finishing >)
const sayMessage = args.join(` `);
message.delete(); // you may want to add a catch() here, i didn't because my bot requires permissions to be added to a server
client.channels.get(channel).send(sayMessage); // client here may need to be replaced with bot, or app, or whatever you're using - client.channels returns a collection, which we use get() to find an item in
请清楚一点,这段代码必须放在您的if (command === "say")
块中。