Получить идентификатор сервера в discord.py rewrite - PullRequest
1 голос
/ 09 мая 2020

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

Ответы [ 2 ]

1 голос
/ 09 мая 2020

Если вы собираете контекст из исходного сообщения / команды, то вы можете использовать ctx.guild.name для возврата имени или ctx.guild.id для возврата идентификатора гильдии, в которой была опубликована команда.

Пример:

bot = commands.Bot(command_prefix='!')

@bot.command(name='whereami', help='print the current server name/id')
async def whereami(ctx):

    await ctx.send(f'{ctx.author.name}, you are currently in {ctx.guild.name} ({ctx.guild.id}).')
1 голос
/ 09 мая 2020

Если вы хотите сохранить какие-либо данные, я рекомендую вам JSON файлов Просто (чтобы получить сервер (гильдия в перезаписи) ID: команда if:

@bot.command()
async def test(ctx):
    ID = ctx.guild.id

событие if (например, on_member_join ()) :

@bot.event()
async def on_member_join(member):
    ID = member.guild.id

если вы хотите сохранить это в JSON файл, вы можете:

@bot.command()
async def test(ctx):
    ID[str(ctx.guild.id)] = [content to save with specific ID]
    with open("data.json", "w") as f:
        json.dump(ID, f, indent=4)

Это будет dump данные в JSON файл. В этих файлах это будет выглядеть так:

{
    "[guild id]": "[content to save]",
}

С помощью этого метода вы можете сэкономить столько, сколько захотите

...