como testar o evento em discord.py

Aug 22 2020

digamos evento 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)

Este é o meu evento (eu sei que funciona) como posso testá-lo de alguma forma para executar o comando para emitir o evento (não manualmente adicionando e removendo alguém)?

[algo como .emit on_member_join @user onde arg1 é o evento e se necessário arg2 é a menção ou id do canal]

Qualquer comando para isso?

algo como Discord.js: Acionando eventos manualmente, mas em discord.py não em JavaScript

Respostas

1 KingsleyZhong Aug 23 2020 at 12:05

Atualmente não há suporte oficial na api discord.py para fazer algo assim, mas você sempre pode fazer um comando na engrenagem como a seguir:

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

Tecnicamente, há uma maneira de fazer isso que não está documentada ...

Linha 131 aqui . Não vou oferecer suporte adicional para isso porque não está documentado.