Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Discord:如何获取新成员加入的通道对象?_Python_Python 3.x_Discord.py - Fatal编程技术网

Python Discord:如何获取新成员加入的通道对象?

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)

我想做一个机器人,向频道的新来者发送消息。 我正在使用discord.py

------------第二天-------------------

首先,谢谢三个人!(对不起,英语不好)。我学习了很多

但不幸的是,我发现“member.server.defaul_channel”(这一定是这个问题的答案)不再存在于此url中:

那么,如何向新来者现在出现的频道发送提及

我知道一种方法,那就是指定频道名称

@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您知道要将消息发送到哪个频道吗?频道也有订单,因此您可以尝试将其发送到“顶级”频道。