【发布时间】:2021-01-06 05:45:18
【问题描述】:
我有一个驻留在多台服务器中的不和谐机器人,但是我想为每台服务器提供加入消息,或者确保我的机器人只向加入其中一个服务器的人发送欢迎消息。
@client.event #Send new members of the server a message
async def on_member_join(member): #Run when a member joins
await member.create_dm() #Create a DM chat with the new user
await member.dm_channel.send(f"Heya, {member.name}! [ETC OF WELCOME MESSAGE]")
print(f'User DM sent:\n----------\nUser: {member.name}\n----------')
根据文档,on_member_join的唯一参数是member,所以这不可能吗?
我一直在尝试根据服务器 ID 发送 DM。
经过一番研究,我看到了ctx.author.send,但是没有用:
File "REDACTED", line 312, in _run_event
await coro(*args, **kwargs)
File "REDACTED", line 34, in on_member_join
await ctx.author.send(f"Heya, {member.name}! REDACTED")
AttributeError: 'Member' object has no attribute 'author'
这是当前形式的完整代码。
@client.event
async def on_member_join(ctx):
current_server = ctx.guild.id
if current_server == server_id:
await ctx.author.send(f"Heya, {member.name}! REDACTED")
print(f'User DM sent:\n----------\nUser: {member.name}\n----------')
【问题讨论】:
-
为什么不能将上一个示例中的
if与第一个示例中的 DM 代码结合起来,仅向一个服务器发送欢迎消息? -
@mousetail 我试过了,这会产生我上面写的错误。
-
在这种情况下您会遇到什么错误?成员没有“作者”,所以第二个例子没有意义。