discord机器人同步返回异步函数值

时间:2018-08-25 21:58:33

标签: asynchronous attributes python-3.6 discord

我试图不问这个问题,所以我尝试了2天来解决这个问题:(我不能。在这里,我是 我只是试图访问异步函数外部的列表“信号”,以便稍后在我的同步代码上使用它。

这是来自不和谐包装器“ discord.py”的异步功能 它读取特定频道上的消息。我的目标是从每个邮件内容中获取一些列表。

import asyncio
from syncer import sync
import discord
import os
import time
from discord.ext import commands

class A:

    TOKEN = "XXXXXXXXX"
    client = commands.Bot(command_prefix = ".")


    @client.event
    async def on_message(message):
        autor = message.author
        content = message.content
        channel = message.channel.id
        while ( channel == 'XXXXXXXXXXXXXX' ):
            if #some filters 
                Signal =[message.content]

                return Signal #'till here the code functions and i get the list' 

 bot =A()
 tasks = asyncio.ensure_future(bot.on_message())
 loop =asyncio.get_event_loop()
 loop.run_until_complete(asyncio.gather(*tasks))

 bot.client.run(bot.TOKEN)

这是我要获取的信号列表:

bot =A()
tasks = asyncio.ensure_future(bot.on_message()) 
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.gather(*tasks))
bot.client.run(bot.TOKEN)
  

loop.run_until_complete(asyncio.gather(*任务))   AssertionError:收益率未用于将来

我尝试使用名为Syncer的async_to_sync包装器:

bot =A()
b = sync(bot.on_message(message))
assert  Signal ==b()
  

b =同步(bot.on_message(消息))   NameError:名称“消息”未定义   未公开的客户会话   client_session:

当我定义消息时:

message = {}
bot =A()
b = sync(bot.on_message(message))
assert  Signal ==b()
b = sync(bot.on_message(message))
     

TypeError:on_message()接受1个位置参数,但给出了2个   未公开的客户会话   client_session:

对于这个愚蠢的问题,我再次感到抱歉,我知道我可能做错了所有 我尽力学习 谢谢

0 个答案:

没有答案