RuntimeWarning:从未等待协程'script'content = str(content)如果content不是其他无

时间:2020-08-11 11:40:08

标签: python async-await discord discord.py discord.py-rewrite

我正尝试在python3.8中与discord.py创建一个discord机器人,其目的是读取文本文件,然后将每个单词作为单独的消息输出到服务器中。 目前,这是我用来尝试将脚本作为每个单独的消息输出的功能:

async def script():
    with open("test.py", 'r') as f:
        for line in f:
            print('\n'.join(line.split()))

然后将此功能应用于以下内容:

@client.event
async def on_message(message):
    if message.content.startswith('r!help'):
        channel = message.channel
        await channel.send('Help')
    elif message.content.startswith('r!start'):
        channel = message.channel
        await script()
        await channel.send(script())

但是,我最终得到一个错误提示

RuntimeWarning: coroutine 'script' was never awaited
  content = str(content) if content is not None else None
RuntimeWarning: Enable tracemalloc to get the object allocation traceback

我认为这是因为没有等待我的协程脚本,但是我以await script()的身份等待它,但是,那似乎不起作用。相反,脚本是在pycharm IDE中打印到我的终端上的,所以不仅不等待协程不将其发送到服务器中的相应通道(可能是因为未等待)。如果有人可以向我解释为什么不等待协程并为正确的解决方法指明正确的方向,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

您正在等待 script ,但是在 await channel.send(script()) 中,您并未等待,但这会产生错误,因为 {{1 }} 不返回

这是修改后的代码

script功能

script

async def script(channel): with open("test.py", 'r') as f: for line in f: await channel.send('\n'.join(line.split())) 事件

on_message