Функция Discord.py asyn c не дает никаких результатов и ничего не делает - PullRequest
2 голосов
/ 28 мая 2020

вот код:

print('hmm1') #testing, this one prints
import discord
from discord.ext import commands
client = commands.Bot(command_prefix='&')
client.run('my token', bot=False)

async def testFunction():
    print('hmm') #<- this one does not print.
    channel = await client.get_channel(708848617301082164)
    message_id=715307791379595275
    msg = await client.get_message(channel, message_id)
    await msg.edit(content="L")
    await msg.edit(content="W")
    print('edited message!')
testFunction()
# none of the above works. I only get "hmm1" printed in console.

Я понятия не имею, что происходит, поскольку в консоли буквально нет ошибок или каких-либо выводов. кто-нибудь знает проблему?

1 Ответ

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

Если вы не знакомы с асинхронными функциями, их необходимо await отредактировать. Примеры сопрограмм можно увидеть в msg.edit(..., так как edit() является сопрограммой, поэтому вам нужно await это так: await testFunction()

Кроме того, client.get_channel() и client.get_message() aren ' t сопрограмм, поэтому их не нужно ждать.

Как упоминал Эри c, вы также захотите переместить client.run('... вниз в последнюю строку в вашем файле, иначе он заблокировать остальную часть скрипта. Вот как должен быть структурирован код:

# imports

# commands, events, functions

# last line
client.run('...

Похоже, вы тоже используете старую документацию, поскольку d.py перешел на перезапись (v1.x), и это выглядит как будто client.get_message(), который вы использовали, на самом деле из v0.16.x .

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

В качестве небольшого старта ваш await client.get_message(channel, message_id) должен стать await channel.fetch_message(message_id).


Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...