Python Discord.py |пригласить ссылку на выпуск уже - PullRequest
0 голосов
/ 25 сентября 2018

С моим кодом я пытаюсь отправить ссылку приглашения на консоль каждого сервера, в котором он находится, в API-интерфейсе discord.py написано, что вы можете написать сервер или канал, но сервер, похоже, не работает для меня.

@client.event
async def on_ready():

    print(client.servers)
    for value in client.servers:
        invitelinknew = await client.create_invite(destination=value)
        print(invitelinknew)

я получаю следующие ошибки:

Ignoring exception in on_ready
Traceback (most recent call last):
  File "C:\Program Files\Python36\lib\site-packages\discord\client.py", line 307, in _run_event
    yield from getattr(self, event)(*args, **kwargs)
  File "C:/Users/Rasmus/Python/discordbot/botnoggi2.py", line 126, in on_ready
    invitelinknew = await client.create_invite(destination=value)
  File "C:\Program Files\Python36\lib\site-packages\discord\client.py", line 2628, in create_invite
    data = yield from self.http.create_invite(destination.id, **options)
  File "C:\Program Files\Python36\lib\site-packages\discord\http.py", line 198, in request
    raise NotFound(r, data)
discord.errors.NotFound: NOT FOUND (status code: 404): Unknown Channel

Моя проблема использует команду on_ready и цикл for для проверки каждого сервера, что не совпадает с При запуске примера кода бота,Я получаю эту ошибку

РЕДАКТИРОВАТЬ:

@client.event
async def on_ready():
    for server in client.servers:
        channel = next(iter(server.channels))
        invitelinknew = await client.create_invite(destination=channel)
        print(invitelinknew)

этот код возвращает:

Traceback (most recent call last):
  File "C:\Program Files\Python36\lib\site-packages\discord\client.py", line 307, in _run_event
    yield from getattr(self, event)(*args, **kwargs)
  File "C:/Users/Rasmus/Python/discordbot/botnoggi2.py", line 126, in on_ready
    invitelinknew = await client.create_invite(destination=channel)
  File "C:\Program Files\Python36\lib\site-packages\discord\client.py", line 2628, in create_invite
    data = yield from self.http.create_invite(destination.id, **options)
  File "C:\Program Files\Python36\lib\site-packages\discord\http.py", line 198, in request
    raise NotFound(r, data)
discord.errors.NotFound: NOT FOUND (status code: 404): Unknown Channel

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

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

@client.event
async def on_ready():
    print(client.servers)
    for server in client.servers:
        for channel in server.channels:
            if channel.type == 'Text':
                invitelinknew = await client.create_invite(destination=channel])
                print(invitelinknew)
                break
0 голосов
/ 25 сентября 2018

Документация немного устарела по этому вопросу.Вы можете создавать приглашения только для каналов.

Раньше у серверов был канал по умолчанию, поэтому приглашение сервера фактически было приглашением на этот канал по умолчанию.

У старых серверов были каналы по умолчанию, но новые серверы не будутесть каналы по умолчанию.

...