Этот вопрос закрыт для ответов, так как повторяет вопрос Как сделать что бы на разных серверах дискорда были разные переменные?
@Romeo558
Продолжающий программист на python.

Как получить информацию о дискорд-сервере только на том сервере где он используется?

У меня есть достаточно хороший бот, с достаточно большим перечнем команд. В этот раз я хочу настроить получение информации о только текущем сервере(объясню поподробней потом).
Я смог это сделать сам, но столкнулся с проблемой, что это была статистика за все сервера на котором находился бот. Мне нужно чтобы была команда отвечающая только за текущий сервер и не задевала другие. Я попробовал это воплотить в реальность, оно как я уже понял безуспешно.
Код:
async def server_info(ctx):
    members_count = 0
    online = 0
    offline = 0
    idle = 0
    dnd = 0
    for member in ctx.guild:
        if member.status == discord.Status.online:
            online += 1
        elif member.status == discord.Status.offline:
            offline += 1
        elif member.status == discord.Status.idle:
            idle += 1
        elif member.status == discord.Status.dnd:
            dnd += 1
        members_count += 1

Ошибка:
Ignoring exception in command server_info:
Traceback (most recent call last):
  File "C:\Users\User\AppData\Roaming\Python\Python39\site-packages\discord\ext\commands\core.py", line 85, in wrapped
    ret = await coro(*args, **kwargs)
  File "C:\Users\User\Discord\bots\database_test.py", line 156, in server_info
    for member in ctx.guild:
TypeError: 'Guild' object is not iterable

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\User\AppData\Roaming\Python\Python39\site-packages\discord\ext\commands\bot.py", line 939, in invoke
    await ctx.command.invoke(ctx)
  File "C:\Users\User\AppData\Roaming\Python\Python39\site-packages\discord\ext\commands\core.py", line 863, in invoke
    await injected(*ctx.args, **ctx.kwargs)
  File "C:\Users\User\AppData\Roaming\Python\Python39\site-packages\discord\ext\commands\core.py", line 94, in wrapped
    raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: 'Guild' object is not iterable

По логике мне нужно было найти вместо ctx.guild, другой, который соответствовал моим требованиям. Но в документации и на просторах интернета я так и не смог найти решения именно к моему случаю. Я буду очень долго его совершенствовать, и ваша помощь будет очень кстати.
  • Вопрос задан
  • 533 просмотра
Ответы на вопрос 1
@alexbprofit
Junior SE
сtx.guild.members
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы