我一直用Python编写我的第一个Discord bot,它一直工作得很好。我决定将我的代码重构为两个模块而不是一个。它看起来像这样:
Proj
- src
-- __init_.py
-- eve.py
-- event.py
我的eve.py看起来像这样:
import discord
from discord.ext import commands
from discord.ext.commands import Bot
import asyncio
from src.event import eventCall
bot = commands.Bot(command_prefix="!")
@bot.event
async def on_ready():
print ("Booting up your system")
print ("I am running on " + bot.user.name)
print ("With the ID: " + bot.user.id)
@bot.command(pass_context=True)
async def event(ctx):
await eventCall(ctx)
bot.run(<client ID>)
我的event.py看起来里面有这个标签:
async def eventCall(ctx):
member = ctx.message.author
message = await bot.send_message(member, "Hi " + member.display_name + "!")
channel = message.channel
(continues)
我一直在努力让eve.py导入event.py,所以我将所有内容都移到了src文件夹中,然后我就不再出现编译错误了。
但现在当我运行eve.py时,on_ready不再触发(我在控制台中看不到任何文本),并且!event命令在Discord中不起作用。
我认为我的文件夹结构和使用import的语法都可能是错误的,但我不确定如何最好地理顺它。
答案 0 :(得分:0)
考虑阅读以下内容:https://discordpy.readthedocs.io/en/latest/intents.html#why-does-on-ready-take-so-long-to-fire
TL; DR 作为有关意图的API更改的一部分,Discord还更改了成员在开始时的加载方式。最初,库可以一次请求75个公会,并且仅从Guild.large属性设置为True的公会中请求成员。有了新的意图变更,Discord要求我们每个请求只能发送1公会。这会导致速度降低75倍,而要求所有公会而不只是大型公会的事实进一步加剧了这种情况。
有关解决方案,请访问上方的链接
答案 1 :(得分:-1)
您必须在eve.py的on_ready函数中键入“等待打印”。