如何在discord.py中测试事件

问题描述

让我们说on_member_join事件

@commands.Cog.listener()
async def on_member_join(self,member):
    # On member joins we find a channel called general and if it exists,# send an embed welcoming them to our guild
    channel = discord.utils.get(member.guild.text_channels,name="welcome")
    if channel:
        embed = discord.Embed(
            description="Welcome to our guild!",color=random.choice(self.bot.color_list),)
        embed.set_thumbnail(url=member.avatar_url)
        embed.set_author(name=member.name,icon_url=member.avatar_url)
        embed.set_footer(text=member.guild,icon_url=member.guild.icon_url)
        embed.timestamp = datetime.datetime.utcNow()

        await channel.send(embed=embed)

这是我的事件(我知道它可以正常工作),我如何以任何方式测试它以执行发出事件的命令(不是通过添加删除人员来手动进行)?

[类似于.emit on_member_join @user,其中arg1是事件,如果需要,则arg2是提及或通道的ID

对此有任何命令吗?

类似Discord.js: Manually triggering events,但在discord.py中不是JavaScript

解决方法

目前,discord.py api中没有官方支持来执行类似操作,但是您始终可以在齿轮中执行以下命令:

@commands.command()
async def test_join(self,ctx,member: discord.Member):
   await self.on_member_join(member)

从技术上讲,有一种方法可能没有记录...

here中的第131行。我不会为此提供额外的支持,因为它没有记录。