【问题标题】:How can I make my bot list servers it's in?如何使我的机器人列表服务器位于其中?
【发布时间】:2018-11-03 12:13:57
【问题描述】:

我对 C# Discord bot-coding 很陌生,在遇到一个我想问的问题后(​​我在网上寻找答案,但没有成功)

我想让机器人保存它所在服务器的数据。

基本上,我的想法是:

  • 每个服务器都有自己的文件,由服务器的 ID Storage\Guild\[guild id] 命名
  • 在有人更改服务器中机器人的选项后(例如,服务器中的前缀,服务器中的员工),服务器的文件被编辑并保存。
  • 服务器文件包含:选择了什么前缀、谁可以访问审核命令等等。

我尝试做类似的事情: Context.Client.Guilds.,但是迷路了。

对此有任何帮助或提示吗?

【问题讨论】:

    标签: c# discord.net


    【解决方案1】:

    好吧,我建议使用某种数据库,但也可以使用文本文件 ofc。至少将你的东西保存在 JSON 中,它会让事情变得更容易。

    所以你可以做的是在DiscordSocketClient#JoinedGuild 事件上创建一个带有公会名称的新文本文件,你还可以设置默认值,例如默认前缀和东西。您要保存的其他内容也是如此。

    因此,由于用户需要通过命令更改前缀,您可以在那里实现它。此外,当您使用文本文件时,您需要在访问它们之前确保它们存在,如果它们被删除了一些如何创建一个新文件。这也适用于您要保存的所有其他内容。

    【讨论】:

      【解决方案2】:

      如果您不熟悉使用数据库,何不试试 sqlite?然后我会使用 Entity Framework 将您的机器人连接到您的数据库。

      无论如何,Context.Client.Guilds 是一个 IReadOnlyCollection,因此您必须将其视为 List 或 Array。希望对您有所帮助!

      foreach (var guild in Context.Client.Guilds)
      {
            var guildName = guild.Name; 
            var owner = guild.Owner.Username;
            var totalUsers = guild.Users.Count();
      }
      

      【讨论】:

      • 这里还提供了一些您可以使用的源代码的链接。它使用 sqlite 和 EF。这是查看机器人所在的 Discord Guilds 列表的模块:gitlab.com/solarcloud7/DiscordBot/blob/master/Solarbot/Modules/…
      • 我实际上已经开始使用数据库,但是,作为我的一个拥有机器人的朋友推荐,我使用 PostgreSQL。数据库似乎是计算和保存机器人所在公会数量的方法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 2021-02-07
      • 1970-01-01
      • 2021-04-03
      • 2021-08-21
      • 1970-01-01
      相关资源
      最近更新 更多