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

时间:2018-02-28 09:15:28

标签: python python-3.x discord.py

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

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

首先,谢谢你们三个人!(抱歉英语不好)。我研究了很多。

但不幸的是,我发现这个网址不再存在“member.server.defaul_channel”(这一定是这个问题的答案): Discord.py Invalid arguments inside member.server_default_channel

然后,如何向现在出现新角色的频道发送提及?

1,我知道一种方法是指定频道名称。

@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)

2,但我想知道更普遍的方式。比如使用“default_channel”。有办法吗?

3 个答案:

答案 0 :(得分:1)

您可以使用on_member_join事件。

以下内容将向" general"发送消息。每次成员加入服务器时都会进行通道。

@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')

如果要检查其他某个频道属性而不是名称,请查看以下文档。

http://discordpy.readthedocs.io/en/latest/api.html#discord.Channel

请注意,我已尝试使用channel.is_default,但这始终会返回False

答案 1 :(得分:0)

会员不加入频道,加入服务器。像

这样的东西
@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)

只要有人加入,就会在服务器的默认频道上发送消息。

答案 2 :(得分:0)

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')