为多个服务器设置DiscordBot的通道ID

时间:2019-05-22 18:22:03

标签: javascript discord discord.js

有人可以帮助我设置命令来设置特定服务器的频道 这样它才不会互相干扰?其实我有这个:

var testChannel = bot.channels.find(channel => channel.id === "hereMyChannelID");

我想设置所有者可以用来为其服务器设置频道ID的命令。

1 个答案:

答案 0 :(得分:0)

您可以通过创建一个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(err => console.error(err));
} else console.log('Invalid or undefined channel.');