Установить идентификатор канала для DiscordBot для нескольких серверов - PullRequest
0 голосов
/ 22 мая 2019

Может кто-нибудь помочь мне установить команду для установки канала для конкретного сервера чтобы это не мешало друг другу? На самом деле у меня есть это:

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

Я хочу установить команду, которую Владелец может использовать для установки идентификатора канала для своего сервера.

1 Ответ

1 голос
/ 23 мая 2019

Вы можете выполнить эту задачу, создав файл 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.');
...