【发布时间】:2021-11-13 13:33:34
【问题描述】:
您好,我正在尝试制作一个功能,让用户加入等候室语音频道,并在他对某个频道中的消息做出反应时使用某些表情符号 他将被拖到另一个语音频道
那么我们有什么办法可以做到这一点吗?
【问题讨论】:
-
请提供足够的代码,以便其他人更好地理解或重现问题。
标签: python discord discord.py
您好,我正在尝试制作一个功能,让用户加入等候室语音频道,并在他对某个频道中的消息做出反应时使用某些表情符号 他将被拖到另一个语音频道
那么我们有什么办法可以做到这一点吗?
【问题讨论】:
标签: python discord discord.py
由于细节模糊,我想出了这段代码
@bot.event
async def on_raw_reaction_add(payload):
member = payload.member
# change ... to your desired message-id and "" to your desired emoji
if payload.message_id == ... and str(payload.emoji) == "":
# change ... to your desired voice channel id:
if member.voice and member.voice.channel.id == ...:
# change ... to your "different voice channel" id
await member.move_to(bot.get_channel(...))
else:
await member.send("Please join the x voice channel")
这使用原始事件,因为正常事件不适用于在机器人启动之前发送的消息。它检查消息ID和与之反应的表情符号。然后它检查成员是否在语音通道中,如果成员在语音通道中,它检查语音通道是否是所需的。如果这些都失败了,那么它会向成员发送消息,要求他加入语音频道(例如 x)。然后如果是那个语音通道,它会将成员移动到另一个语音通道
【讨论】:
bot.get_channel(...) 部分并将其保存到名为 @ 的变量中987654324@ 例如在函数的开头,然后在move_to 中将bot.get_channel(...) 更改为您的变量名(例如vc)。对于成员检查,在 move_to 之前使用 if len(vc.members) > 123 并将 123 更改为最大成员数,如果 if 语句通过则只需 dm 用户