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