问题描述
让我们说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行。我不会为此提供额外的支持,因为它没有记录。