Discord py — один и тот же бот на разных серверах

#python #json #discord #discord.py

#python #json #Discord #discord.py

Вопрос:

В настоящее время я создаю бота для нескольких серверов. Цель состоит в том, чтобы хранить разные идентификаторы для разных серверов в одном файле json.

Единственная проблема в том, что я не знаю, как проверить, на каком сервере в данный момент находится бот, а затем использовать эту информацию для использования правильных идентификаторов.

Я уже создал файл json и загрузил его в свой код, но теперь я не знаю, как загружать и использовать правильные идентификаторы из него.

На данный момент мой файл json выглядит так:

 {

    "token": 123,
    "server1": [
        {
            "ownerid": 123,
            "memberid": 123,
            "IDs" : [
                {
                    "messageid": 123,
                    "roleid": 123
                }
            ]
        }
    ],

    "server2": [
        {
            "ownerid": 123,
            "memberid": 123
        }
    ]
}
 

Как я могу проверить, на каком сервере в данный момент находится бот?
Делает ли json это вообще или мне нужно что-то еще?

Я действительно не могу найти ни одного руководства по использованию одного и того же бота на нескольких серверах?? Можете ли вы, ребята, привести мне какие-либо примеры?

Спасибо за помощь 🙂

Ответ №1:

Лучший способ сделать это — сохранить идентификатор гильдии после ее присоединения (и, возможно, удалить его при выходе).

В качестве некоторых рекомендаций, чтобы получить идентификатор каждой гильдии, сработало бы что-то вроде этого:

 @bot.event
async def on_guild_join(guild):
   id = guild.id
 

В случае, если у вас есть создание JSON в другой функции или ваш бот уже запущен на нескольких серверах, и вы хотите знать, на каком guilds из них он находится в данный момент, вы можете повторить client.guilds атрибут:

 for guild in self.client.guilds:
   id = guild.id
   # Add id to JSON
 

Комментарии:

1. И могу ли я сохранить отдельные идентификаторы для определенного сервера в json? Как мне тогда импортировать json? Обычный с open with вызовом, а затем вызов или есть что-то особенное?

2. В моем примере это было только для сохранения guild id , если вы хотите сохранить другие идентификаторы внутри, просто выполните итерацию, например for member.id in guild.members , или for role.id in guild.roles . Библиотека JSON может помочь вам с сбросом информации в ваши файлы.