Python开发Discord Bot无法使用部分Emoji问题求助
问题原因与解决方法
错误原因
你遇到的SyntaxError是因为Python对\U转义序列有严格规则:\U必须后跟完整的8位十六进制数字。
- 能正常运行的
\U0001F92E是符合要求的(1F92E前补0凑够8位),所以解析无问题。 - 黑框Emoji的Unicode码点是4位(比如⬛的码点为U+2B1B),若强行用
\U开头但只写4位,Python会判定转义序列不完整,抛出截断错误。
解决办法
方法1:直接复制Emoji字符
Python 3原生支持Unicode字符串,直接把目标Emoji复制到代码里最省心:
message.add_reaction("⬛")
方法2:匹配码点长度用对应转义符
- 4位十六进制码点用
\uXXXX格式:# 黑框⬛的码点是U+2B1B,对应写法 message.add_reaction("\u2B1B") - 8位十六进制码点(超出基本多语言平面的Emoji)用
\UXXXXXXXX格式,比如你之前的🤮:message.add_reaction("\U0001F92E")
方法3:使用raw字符串(不推荐)
若要保留转义写法,可在字符串前加r让Python不解析转义,但这种方式会把\U当成普通字符,需确保Discord能识别,一般不推荐:
message.add_reaction(r"\u2B1B")
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

