使用discord.py在Flask python中将DM发送给用户

时间:2020-10-19 01:09:27

标签: python flask discord.py

因此,我正在尝试使用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.

的原因。

1 个答案:

答案 0 :(得分:0)

尝试在函数定义中添加异步。

async def respond():