使用quart-python运行discord-bot



我正在尝试创建一个具有两个功能的discord机器人。

  1. 向服务器中的每个人更新一些信息(这是通过使用webhook和uptimerobot调用webhook来完成的(
  2. 服务器中的社区可以通过告诉机器人程序的ID来提示机器人程序提供其他信息

我使用app.route作为第一个功能,使用on_message((作为第二个功能。但只有第一个在起作用。

这是我的代码片段

import discord
import asyncio
import os
from quart import Quart
from discord.ext import commands
from dotenv import load_dotenv
import requests
import datetime
from datetime import timezone
import json
import random
import nest_asyncio
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
OS_TOKEN = os.getenv('OPENSEA_TOKEN')
nest_asyncio.apply()
app = Quart(__name__)
client = discord.Client()
@app.before_serving
async def before_serving():
loop = asyncio.get_event_loop()
await client.login(TOKEN)
loop.create_task(client.connect())
@client.event
async def on_message(message):
if message.author == client.user:
return

print('in func')

@client.event
async def on_ready():
print("Initiated!")

@app.route("/send")
async def broadcast():
for server in client.guilds:
for channel in server.text_channels:
try:
await channel.send("test")
except Exception:
continue
else:
break
return "hello world"
app.run()

我设法把两者分开跑。但当我一起运行它们时,只有webhook在工作,任何@client模块都不工作。此外,我从flask迁移到quart,因为我在某个地方读到flask不能同时运行它自己和discord服务器。

任何帮助都将不胜感激!

我想你可能忘记检查discord-dev门户中所需的权限。此外,我还通过将@client.event替换为@bot.event 解决了类似的问题

最新更新