【问题标题】: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 是 Flask 的异步实现,因此线程需要是异步的。有谁知道我怎么能做到这一点?试了好几种方法都不管用
【问题讨论】:
标签:
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)