DarkCat09 / python-aternos

[UNMAINTAINED] Unofficial Aternos API written in Python
https://pypi.org/project/python-aternos/
Apache License 2.0
93 stars 12 forks source link

ошибка с list_servers #24

Closed tigra323 closed 2 years ago

tigra323 commented 2 years ago

Взял код ZeynX92, изменил под себя и решил добавить вход через восстановление сессии.

    async def start_server(self, ctx):
        await ctx.response.defer()
        get_server()
        print(atern)
        selectserver = atern.list_servers()[0]
        if selectserver.status == 'offline':
            selectserver.start(accepteula=True)
            await ctx.edit_original_message(
                embed=Embed(title='Успех!', description='Сервер запускается, пожалуйста подождите...'))
        elif selectserver.status == 'online':
            await ctx.edit_original_message(
                embed=Embed(title='Ошибка', description='Сервер уже запущен.'))
        else:
            await ctx.edit_original_message(
                embed=Embed(title='Ошибка', description='Сервер нельзя запустить'))
        atern.save_session()

После запуска этой функции ошибка:

  File "C:\Users\tigra323\Desktop\aternos\bot\cogs\aternosgl.py", line 54, in start_server
    selectserver = atern.list_servers()[0]
AttributeError: 'function' object has no attribute 'list_servers'

функция get_server()

def get_server():
    global atern
    try:
        atern = Client.restore_session
    except Exception:
        atern = Client.from_credentials(alog, apas)
    print(atern)

В каком месте я допустил ошибку не знаю, но пж скажите где и как исправить

DarkCat09 commented 2 years ago

Здравствуйте. Посмотрите на кусок кода в get_server, в блоке try.
Client.restore_session() должен вызываться со скобками, потому что это функция.
Сейчас получается, что Вы записываете в atern саму функцию, а не результат её выполнения.

def get_server():
    global atern
    try:
        atern = Client.restore_session()
    except Exception:
        atern = Client.from_credentials(alog, apas)

Hello. Look at the code in a "try" block in get_server.
Client.restore_session() should be called with parenthesis because it's a function.
Now, you are trying to write to atern the function itself instead of an execution result.

tigra323 commented 2 years ago

Огромное спасибо, особенно за быструю поддержку!

tigra323 commented 2 years ago

и уточнение: чтобы обновить статус серваков надо перезаписывать переменную?

DarkCat09 commented 2 years ago

Да, вручную менять значение server._info, если Вы об этом.
Либо можно вызывать server.fetch(), но он сделает лишний запрос к API.