Asynchronous discord bot同步返回异步函数值
我试着不去问这个问题,所以我试了两天来解决这个问题:(我不能,我来了 我只是想访问异步函数外部的“信号”列表,以便稍后在我的同步代码中使用它 这是discord包装器'discord.py'中的异步函数 它读取特定频道上的消息。我的目标是从每个消息内容中获取一些列表Asynchronous discord bot同步返回异步函数值,asynchronous,attributes,python-3.6,discord,Asynchronous,Attributes,Python 3.6,Discord,我试着不去问这个问题,所以我试了两天来解决这个问题:(我不能,我来了 我只是想访问异步函数外部的“信号”列表,以便稍后在我的同步代码中使用它 这是discord包装器'discord.py'中的异步函数 它读取特定频道上的消息。我的目标是从每个消息内容中获取一些列表 import asyncio from syncer import sync import discord import os import time from discord.ext import commands class
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)
循环。运行_直到_完成(asyncio.gather(*任务))
AssertionError:future没有使用收益率
我尝试使用名为Syncer的异步到同步包装器:
bot =A()
b = sync(bot.on_message(message))
assert Signal ==b()
b=同步(bot.on_消息(消息))
NameError:未定义名称“消息”
未关闭的客户端会话
客户端会话:
当我定义消息时:
message = {}
bot =A()
b = sync(bot.on_message(message))
assert Signal ==b()
TypeError:on_message()接受1个位置参数,但给出了2个
未关闭的客户端会话
客户端会话:
我再次为这个愚蠢的问题感到抱歉,我知道我可能做错了
我正在努力学习
谢谢这并不是它真正的工作方式。当你在消息上定义一个
事件时,每次bot看到消息时都会调用该协同程序。你仍然可以手动调用它,但你必须向它传递一个消息
对象。一旦你有了它,你想对该信号
对象做什么?我正在写g一种代码,每当频道上发布新消息时,它将根据消息的内容进行操作。信号基本上是一个包含3个字符串的列表,因此代码的其余部分将执行“如果信号[0]=”某事“执行某事您可能应该将该功能放在它自己的函数(或协同程序)中谢谢@PatrickHaugh我考虑过这个问题,但这似乎是一个简单的方法,因为剩下的代码很长,这应该只是运行它的触发器如果这有意义的话,我想让它看起来更好
b = sync(bot.on_message(message))