首页 > 解决方案 > Discord.py 加入/留言

问题描述

我正在尝试让我的加入/离开消息正常工作,但不确定我是否做得对。我与一个机器人用户进行了测试,但它在控制台中抛出了一个错误。这是我的代码:

    @commands.Cog.listener()
    async def on_member_join(self, ctx, *, member):
        ctx.channel = get(ctx.member.guild.channels, name="join-leave")

        embed = discord.Embed(color=0x4a3d9a)
        embed.add_field(name="Welcome", value=f"{member.name} has joined {member.guild.name}", inline=False)
        embed.set_image(url="https://newgitlab.elaztek.com/NewHorizon-Development/discord-bots/Leha/-/raw/master/res/welcome.gif")
        await self.client.send_message(ctx.channel, embed=embed)

    @commands.Cog.listener()
    async def on_member_remove(self, ctx, *, member):
        ctx.channel = get(ctx.member.guild.channels, name="join-leave")

        embed = discord.Embed(color=0x4a3d9a)
        embed.add_field(name="Welcome", value=f"{member.name} has left {member.guild.name}", inline=False)
        embed.set_image(url="https://newgitlab.elaztek.com/NewHorizon-Development/discord-bots/Leha/-/raw/master/res/goodbye.gif")
        await self.client.send_message(ctx.channel, embed=embed)

这是它抛出的错误:

Ignoring exception in on_member_join
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/discord/client.py", line 312, in _run_event
    await coro(*args, **kwargs)
TypeError: on_member_join() missing 1 required positional argument: 'member'
Ignoring exception in on_member_remove
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/discord/client.py", line 312, in _run_event
    await coro(*args, **kwargs)
TypeError: on_member_remove() missing 1 required positional argument: 'member'

任何帮助将不胜感激。如果有帮助,我也在重写分支。

标签: python-3.xdiscord.py-rewrite

解决方案


您只需按照文档中的说明为 on_member_join 传递一个参数。获取通道的最简单方法是遍历它们,然后按如下方式发送嵌入:

@commands.Cog.listener()
async def on_member_join(self, member):
    for channel in member.guild.channels:
        if str(channel) == "join-leave":
            embed = discord.Embed(color=0x4a3d9a)
            embed.add_field(name="Welcome", value=f"{member.name} has joined {member.guild.name}", inline=False)
            embed.set_image(url="https://newgitlab.elaztek.com/NewHorizon-Development/discord-bots/Leha/-/raw/master/res/welcome.gif")
            await channel.send(embed=embed)

推荐阅读