为多个服务器设置 DiscordBot 的频道 ID
Set channel id for DiscordBot for multiple servers
有人可以帮我设置命令来为特定服务器设置频道吗
这样就不会互相干扰了?其实我有这个:
var testChannel = bot.channels.find(channel => channel.id === "hereMyChannelID");
我想设置所有者可以用来为其服务器设置频道 ID 的命令。
您可以通过创建一个 JSON 文件来保存每个公会的指定频道来完成此任务。然后,在您的命令中,只需在 JSON 中定义通道。之后,在代码的其他任何地方,您都可以找到公会所有者指定的频道并与之交互。
请记住,数据库将是更好的选择,因为速度比较快且损坏风险低得多。找到适合您和您的代码的那个,并将此 JSON 设置替换为数据库。
guilds.json
设置:
{
"guildID": {
"channel": "channelID"
}
}
命令码:
// -- Define these variables outside of the command. --
const guilds = require('./guilds.json');
const fs = require('fs');
// ----------------------------------------------------
const args = message.content.trim().split(/ +/g); // Probably already declared.
try {
if (message.author.id !== message.guild.ownerID) return await message.channel.send('Access denied.');
if (!message.mentions.channels.first()) return await message.channel.send('Invalid channel.');
guilds[message.guild.id].channel = message.mentions.channels.first().id;
fs.writeFileSync('./guilds.json', JSON.stringify(guilds));
await message.channel.send('Successfully changed channel.');
} catch(err) {
console.error(err);
}
其他地方:
const guilds = require('./guilds.json');
const channel = client.channels.get(guilds[message.guild.id].channel);
if (channel) {
channel.send('Found the right one!')
.catch(console.error);
} else console.error('Invalid or undefined channel.');
有人可以帮我设置命令来为特定服务器设置频道吗 这样就不会互相干扰了?其实我有这个:
var testChannel = bot.channels.find(channel => channel.id === "hereMyChannelID");
我想设置所有者可以用来为其服务器设置频道 ID 的命令。
您可以通过创建一个 JSON 文件来保存每个公会的指定频道来完成此任务。然后,在您的命令中,只需在 JSON 中定义通道。之后,在代码的其他任何地方,您都可以找到公会所有者指定的频道并与之交互。
请记住,数据库将是更好的选择,因为速度比较快且损坏风险低得多。找到适合您和您的代码的那个,并将此 JSON 设置替换为数据库。
guilds.json
设置:
{
"guildID": {
"channel": "channelID"
}
}
命令码:
// -- Define these variables outside of the command. --
const guilds = require('./guilds.json');
const fs = require('fs');
// ----------------------------------------------------
const args = message.content.trim().split(/ +/g); // Probably already declared.
try {
if (message.author.id !== message.guild.ownerID) return await message.channel.send('Access denied.');
if (!message.mentions.channels.first()) return await message.channel.send('Invalid channel.');
guilds[message.guild.id].channel = message.mentions.channels.first().id;
fs.writeFileSync('./guilds.json', JSON.stringify(guilds));
await message.channel.send('Successfully changed channel.');
} catch(err) {
console.error(err);
}
其他地方:
const guilds = require('./guilds.json');
const channel = client.channels.get(guilds[message.guild.id].channel);
if (channel) {
channel.send('Found the right one!')
.catch(console.error);
} else console.error('Invalid or undefined channel.');