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

问题描述 投票:1回答:2

我想制作一个机器人,在频道向新来的人发送信息。我正在使用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”。有办法吗?

python python-3.x discord.py
2个回答
1
投票

您可以使用on_member_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')

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

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

请注意,我尝试过使用channel.is_default,但这总是会返回False


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)

每当有人加入时,都会在服务器的默认通道上发送消息。

© www.soinside.com 2019 - 2024. All rights reserved.