【问题标题】:Change bot nickname (Discord js) in a guild where a command was executed在执行命令的行会中更改机器人昵称(Discord js)
【发布时间】:2021-07-31 05:40:36
【问题描述】:

我很快就会制作一个免费的公共机器人,但我遇到了一些麻烦。 我正在尝试使用一个命令(例如:-bitcoin)使机器人仅在行会中每 30 秒更改一次名称(机器人昵称),但是当创建一个函数并循环它以使其成为可能时,机器人不能再次获取公会 ID,因为在第二次及以后没有回复任何消息。

if(command === 'bitcoin'){
  updateNickname(message);
  setInterval(updateNickname, 30000);
}

async function updateNickname(message) {
  const { data } = await axios.get(`https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=eur`);
  return message.guild.me.setNickname(`BTC = ${data.bitcoin.eur}€`);
}

有人可以帮我吗?

免责声明:我不能只缓存一个 id,因为它不能在其他服务器上工作,它只能在我发短信的服务器 ID 中工作,所以我希望它同时在多个服务器上工作(在进一步的发展中,人们将能够为各个服务器选择自己的密码和货币)。

【问题讨论】:

    标签: javascript discord.js


    【解决方案1】:

    我可能会将这些数据保存在数据库中(因为我猜你希望它在机器人重启之间保存)。

    然后,我将有 1 个间隔每 30 秒运行一次,这将同时更新所有公会。这在您的机器人上也应该更容易,因为您没有为每个安装此机器人的公会设置不同的间隔。

    if(command === 'bitcoin'){
      updateNickname(message.guild, message.data);
      await persistInDatabase({
        guildId: message.guild.id
        coin: message.data
      });
    }
    
    // run this every 30 seconds.
    setInterval(updateNicknames, 30000);
    
    // change nickname for a single guild
    async function updateNickname(guild, coin) {
      const { data } = await axios.get(`https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=eur`);
      return guild.me.setNickname(`BTC = ${data.bitcoin.eur}€`);
    }
    
    // change nickname for ALL guilds this bot is installed on
    async function updateNicknames() {
      const allGuilds = await getAllFromDb();
      for(let dbGuild of allGuilds) {
        const guild = client.guilds.get(dbGuild.guildId);
        updateNickname(guild, dbGuild.coin);
      }
    }
    
    • 我没有包含数据库功能,但应该很简单。只需选择您最喜欢的数据库 :-)
    • 我在数据库中保存了硬币类型,但如果您不需要它,可以将其删除。
    • 您可以缓存 axios 调用,这样您就不会为安装此机器人的每个公会都执行此操作。

    【讨论】:

    • 非常感谢!!!我知道这太多了,但你能帮我处理数据库功能吗?我是新来的 :DD,无论如何,如果你在那里更容易帮助我,我会让我的不和谐在这里 (Loan#2334)。
    • @Luisikoman 向您发送了好友请求。批准我,我们会继续那里
    猜你喜欢
    • 2021-11-01
    • 1970-01-01
    • 2017-08-04
    • 2021-03-11
    • 2019-09-05
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多