Używam funkcji wymagającej czeka. Kod po tym nie jest wykonywany, ale funkcja oczekująca jest oczywiście wykonywana, ponieważ można zobaczyć działania. Ale nie jest jasne do powiedzenia, jeśli funkcja oczekiwania naprawdę się skończy.

Szczególny przypadek: Próbuję podłączyć moją niezgodę-bot do kanału głosowego za pomocą następującego polecenia:

vs = await message.author.voice.channel.connect()

Można zobaczyć, że bot faktycznie dołącza do kanału. Występujące nie ma błędów, ale proste instrukcja drukowania później nie jest wykonywana.

Byłbym wdzięczny na konkretne odpowiedzi na Discord.py przepisanie, ale także wskazówki, dlaczego oświadczenie o oczekiwania Pythona może zatrzymać dalszy kod przed wykonaniem. Dzięki!

0
FinnK 21 marzec 2020, 03:42

1 odpowiedź

Najlepsza odpowiedź

Według {x0}} Dokumentacja , wywołanie connect() Rozpoczyna pętlę:

Jest to pętla, która prowadzi cały system zdarzeń i różne aspekty biblioteki.

Ponadto zakończy się tylko po zakończeniu połączenia:

Sterowanie nie jest wznowione, dopóki połączenie WebSocket jest zakończone.

Rozwiązaniem jest zarejestrowanie wywołania zwrotów i używania connect() w nowym zadaniu lub wystarczy użyć connect() / client.run() Jeśli aplikacja nie potrzebuje innych zadań.

1
DurandA 21 marzec 2020, 00:56