come testare l'evento in discord.py

Aug 22 2020

diciamo l'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)

Questo è il mio evento (so che funziona) come posso testarlo in qualche modo per eseguire il comando per emettere l'evento (non manualmente aggiungendo e rimuovendo qualcuno)?

[qualcosa come .emit on_member_join @user dove arg1 è l'evento e se necessario arg2 è la menzione o l'id del canale]

Qualche comando per quello?

qualcosa come Discord.js: attivazione manuale di eventi ma in discord.py non in JavaScript

Risposte

1 KingsleyZhong Aug 23 2020 at 12:05

Attualmente non c'è supporto ufficiale nell'api discord.py per fare qualcosa del genere, ma puoi sempre eseguire un comando nell'ingranaggio come segue:

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

Tecnicamente c'è un modo per farlo probabilmente che non è documentato ...

Riga 131 qui . Non offrirò ulteriore supporto per questo perché non è documentato.