在运行Discord Bot(Python)

时间:2018-02-10 19:40:36

标签: python discord.py

我一直用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的语法都可能是错误的,但我不确定如何最好地理顺它。

2 个答案:

答案 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函数中键入“等待打印”。