Python Discord:如何获取新成员加入的通道对象?
我想做一个机器人,向频道的新来者发送消息。 我正在使用discord.py ------------第二天------------------- 首先,谢谢三个人!(对不起,英语不好)。我学习了很多 但不幸的是,我发现“member.server.defaul_channel”(这一定是这个问题的答案)不再存在于此url中: 那么,如何向新来者现在出现的频道发送提及 我知道一种方法,那就是指定频道名称Python Discord:如何获取新成员加入的通道对象?,python,python-3.x,discord.py,Python,Python 3.x,Discord.py,我想做一个机器人,向频道的新来者发送消息。 我正在使用discord.py ------------第二天------------------- 首先,谢谢三个人!(对不起,英语不好)。我学习了很多 但不幸的是,我发现“member.server.defaul_channel”(这一定是这个问题的答案)不再存在于此url中: 那么,如何向新来者现在出现的频道发送提及 我知道一种方法,那就是指定频道名称 @client.event async def on_member_join(member)
@client.event
async def on_member_join(member):
server = member.server
channel = [channel for channel in client.get_all_channels() if channel.name == 'WRITE_YOUR_CHANNEL_NAME!!'][0]
message = 'hello {}, welcome to {}'.format(member.mention, server.name)
await client.send_message(channel, message)
但是我想知道更普遍的方法。例如使用“默认_通道”。有办法吗?会员不是真正加入频道,而是加入服务器。差不多
@client.event
async def on_server_join(member):
server = member.server
default channel = server.default_channel
message = ''Hello {}, welcome to {}'.format(member.mention, server.name)'
await client.send_message(default_channel, message)
每当有人加入时,将在服务器的默认频道上发送消息。您可以使用
on\u member\u join
事件
每当一个成员加入服务器时,以下内容将向“常规”通道发送一条消息
@client.event
async def on_member_join(member):
for channel in member.server.channels:
if channel.name == 'general':
await client.send_message(channel, 'Message to send when member joins')
如果要检查其他通道属性而不是名称,请检查以下文档
请注意,我已经尝试使用
频道。它是默认的
,但它总是返回False
API有一些变化。现在应该可以这样做了:
@client.event
async def on_member_join(member):
for channel in client.get_all_channels():
if channel.name == 'general':
await channel.send(
f'Hi {member.mention}, Message to send when member joins')
非常感谢你!我可以用你的建议发送私人信息!我很抱歉,我想知道如何发送默认ch上的提及。但是谢谢你的建议,我试过了,我可以学习!我已经更新了我的答案。代码现在将向指定的通道发送消息谢谢您的建议!我试过了,出现了错误。“discord.errors.InvalidArgument:目标必须是频道、PrivateChannel、User或Object.Received NoneType”我找到了答案?(默认频道已不存在)@shshsh12您知道要将消息发送到哪个频道吗?频道也有订单,因此您可以尝试将其发送到“顶级”频道。