【问题标题】:Running a Flask/Quart app with a Discord.py bot使用 Discord.py 机器人运行 Flask/Quart 应用程序
【发布时间】:2021-04-07 03:22:55
【问题描述】:

我正在尝试制作一个 Discord 机器人,当它收到来自 webhook 的 ping 时,它会侦听 webhook 并在不和谐通道中发送消息。似乎由于线程在 python 中的工作方式,我无法在主线程上同时运行 Quart 服务器和 Discord.py 机器人。我正在尝试将机器人和服务器都迁移到他们自己的线程上。 Quart 是 Fl​​ask 的异步实现,因此线程需要是异步的。有谁知道我怎么能做到这一点?试了好几种方法都不管用

【问题讨论】:

    标签: python flask python-asyncio python-multithreading quart


    【解决方案1】:

    这是我编写的一小段代码。这一切都应该奏效。如果你不使用 .env 文件,你可以复制粘贴你的令牌。但是,我强烈建议使用 .env 文件来处理 secret 的事情。

    import discord
    import os
    from discord.ext import commands
    
    from dotenv import load_dotenv
    
    from quart import Quart
    
    load_dotenv()
    TOKEN = os.getenv("DISCORD_TOKEN")
    PREFIX = "!"
    
    bot = commands.Bot(command_prefix=PREFIX)
    
    @bot.event
    async def on_ready():
        print(f'{bot.user} has connected to Discord!')
    
    @bot.command(name="hi")
    async def hi_command(ctx):
        await ctx.channel.send("hello")
    
    app = Quart(__name__)
    
    @app.route("/")
    async def hello():
        return "hello world"
    
    bot.loop.create_task(app.run_task())
    
    bot.run(TOKEN)
    

    【讨论】:

    • 我无法杀死这个服务器。 ctrl+c 不会破坏它
    猜你喜欢
    • 2018-07-19
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 2022-01-15
    • 2019-02-09
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多