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

Posted

技术标签:

【中文标题】为多个服务器设置 DiscordBot 的频道 ID【英文标题】:Set channel id for DiscordBot for multiple servers 【发布时间】:2019-10-09 07:05:54 【问题描述】:

谁能帮我设置命令来设置特定服务器的频道 这样就不会互相干扰了?其实我有这个:

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

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

【问题讨论】:

【参考方案1】:

您可以通过创建一个 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.');

【讨论】:

以上是关于为多个服务器设置 DiscordBot 的频道 ID的主要内容,如果未能解决你的问题,请参考以下文章

如何让我的 Discord Bot 删除服务器中的所有频道

如何让 Discord Bot 选择频道

Discord Bot公告频道

Discord Bot 可以在频道上向所有人发送消息吗

Discord bot如何创建私人文本频道

Discord Bot (C#) 问题加入语音频道