python-3.x - 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'
任何帮助将不胜感激。如果有帮助,我也在重写分支。
解决方案
您只需按照文档中的说明为 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)
推荐阅读
- email - Flutter(邮件程序包):从应用程序内部发送邮件。收不到邮件
- php - 按字母表将 MySQL 数据分成四个相等的引导行顺序
- c# - 在 EF 核心的启动文件中播种用户:依赖注入错误
- matlab - 无法缩短倾覆错误栏
- javascript - sapui5 localstorage 购物车演示
- ionic-framework - 电子窗口适合内容的宽度和高度
- java - View 中的 setBackground 不能应用于 (int)
- c++ - 为什么我的GPU程序可以执行,虽然块数超过了常驻块数?
- excel - 为什么 For Each over Range.Columns(1) 不遍历单元格?
- rust - 为什么编译器建议在模块中使用自己?