因此,我正在尝试使用flask模块为我的discord机器人创建一个表决webhook,但是显然在同一文件中导入discord.py和flask并不能很好地实现。运行代码时,它仅显示RuntimeError: Event loop stopped before Future completed.
。这是我的代码:
#setup code
@app.route('/webhook', methods=['POST'])
def respond():
data = request.json
auth = request.headers
if auth["Authorization"] == "my_auth":
user = client.get_user(user_id)
await user.send('Thank you for voting for me! Make sure you vote again in 12 hours!')
return Response(status=200)
那是行不通的,因为您无法在await
函数之外执行async
,所以我用await user.send('Thank you for voting for me! Make sure you vote again in 12 hours!')
代替了client.loop.create_task(user.send('Thank you for voting for me! Make sure you vote again in 12 hours!'))
错误RuntimeError: Event loop stopped before Future completed.
。有人告诉我使用Flask不会让discord.py运行,而且我不知道如何解决该问题。那么,您能帮我找出触发Webhook时如何向用户发送DM吗?
有关Webhook的信息: Click Here to see the request
版本: 的Python:3.8.5 Discord.py:1.4.1 烧瓶:1.1.2
编辑:我意识到,当我在终端中键入flask run
时,此方法确实有效,但不适用于gunicorn app:app
。由于键入flask run
运行的是开发服务器,而不是我实际使用的服务器,因此我运行gunicorn app:app
,这就是给我RuntimeError: Event loop stopped before Future completed.
答案 0 :(得分:0)
尝试在函数定义中添加异步。
async def respond():