我如何转义 discord.py 中的@everyone?
How do I escape @everyone in discord.py?
我正在 Python 开发一个 Discord 机器人,它根据用户输入输出文本。 我想避免用户让它说 @everyone
(和 @here
),这会标记并惹恼每个人。
我尝试使用 \@everyone
,与 @everyone
相反,它不会使文本本身变成蓝色,但它 仍然会触发 ping 并以黄色突出显示该行.这不仅发生在我用机器人发送消息时,如果我直接使用 Discord 也会发生。
我一直使用的解决方案是在'@'之后插入一个zero-width space。这不会改变文本外观 ('zero-width'),但额外的字符会阻止 ping。它具有 unicode 代码点 200b
(十六进制):
message_str = message_str.replace('@', '@\u200b')
更明确地说,discord.py 库本身有 escape_mentions
用于此目的:
message_str = discord.utils.escape_mentions(message_str)
def escape_mentions(text):
return re.sub(r'@(everyone|here|[!&]?[0-9]{17,21})', '@\u200b\1', text)
我正在 Python 开发一个 Discord 机器人,它根据用户输入输出文本。 我想避免用户让它说 @everyone
(和 @here
),这会标记并惹恼每个人。
我尝试使用 \@everyone
,与 @everyone
相反,它不会使文本本身变成蓝色,但它 仍然会触发 ping 并以黄色突出显示该行.这不仅发生在我用机器人发送消息时,如果我直接使用 Discord 也会发生。
我一直使用的解决方案是在'@'之后插入一个zero-width space。这不会改变文本外观 ('zero-width'),但额外的字符会阻止 ping。它具有 unicode 代码点 200b
(十六进制):
message_str = message_str.replace('@', '@\u200b')
更明确地说,discord.py 库本身有 escape_mentions
用于此目的:
message_str = discord.utils.escape_mentions(message_str)
def escape_mentions(text):
return re.sub(r'@(everyone|here|[!&]?[0-9]{17,21})', '@\u200b\1', text)