我正在尝试创建一个具有两个功能的discord机器人。
- 向服务器中的每个人更新一些信息(这是通过使用webhook和uptimerobot调用webhook来完成的(
- 服务器中的社区可以通过告诉机器人程序的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 解决了类似的问题