Python 如何在discord.py欢迎邮件中使用ctx?
因此,我试图用一个图像构建一个不和谐的欢迎消息,但是当我使用以下代码时:Python 如何在discord.py欢迎邮件中使用ctx?,python,discord,discord.py,discord.py-rewrite,Python,Discord,Discord.py,Discord.py Rewrite,因此,我试图用一个图像构建一个不和谐的欢迎消息,但是当我使用以下代码时: @bot.event async def on_member_join(member, ctx, user: discord.Member = None): with open('users.json', 'r') as f: users = json.load(f) await update_data(users, member) with open('users.json',
@bot.event
async def on_member_join(member, ctx, user: discord.Member = None):
with open('users.json', 'r') as f:
users = json.load(f)
await update_data(users, member)
with open('users.json', 'w') as f:
json.dump(users, f)
if user == None:
user = ctx.author
asset = user.avatar_url_as(size=128)
data = BytesIO(await asset.read())
im = Image.open(data)
im = im.resize((244, 244));
bigsize = (im.size[0] * 3, im.size[1] * 3)
mask = Image.new('L', bigsize, 0)
draw = ImageDraw.Draw(mask)
draw.ellipse((0, 0) + bigsize, fill=255)
mask = mask.resize(im.size, Image.ANTIALIAS)
im.putalpha(mask)
output = ImageOps.fit(im, mask.size, centering=(0.5, 0.5))
output.putalpha(mask)
output.save('output.png')
background = Image.open('welcome.png')
background.paste(im, (418, 68), im)
background.save('overlap.png')
await ctx.send(f'Welcome {user.mention}!')
await ctx.send(file=discord.File("overlap.png"))
…我得到一个错误:
await coro(*args, **kwargs)
TypeError: on_member_join() missing 1 required positional argument: 'ctx'
我不确定为什么会发生这种情况,因为我在事件中定义了ctx。任何帮助都将不胜感激。您不能在
on\u member\u join
事件中使用member
以外的任何其他参数。如果要向频道发送消息,可以使用channel.send
。要获取频道,可以使用或。下面是一个简单的例子:
@bot.event
成员加入时的异步定义(成员):
通道=成员.公会.获取通道(通道id)
等待channel.send(f'Welcome{user.notice}!')
等待channel.send(file=discord.file(“overlap.png”))
您不能在on\u member\u join
事件中使用member
以外的任何其他参数。这是否意味着无法在欢迎消息中包含自定义欢迎图片?或者我遗漏了什么。为什么需要ctx
?这不只是为了发送消息吗?我在代码中使用if user==None:user=ctx.author
,它使用ctx将pfp放入图像中。您希望如何在成员加入时触发事件?您不能在事件中使用ctx
。