discord.utils.escape\u提到不起作用?

yvfmudvl  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(287)

我正在尝试使用discord.utils.escape\u提及来删除message.content中的提及。长话短说,我注意到它不像我预期的那样工作。

var = discord.utils.escape_mentions("test @!334765815435886592 test")
print(var)

将源字符串作为输出打印给我
试验@​!334765815435886592测试
不过,这里是你提到的逃逸定义

return re.sub(r'@(everyone|here|[!&]?[0-9]{17,20})', '@\u200b\\1', text)

如果我复制它并用空字符串替换'@\u200b\1',所有的工作都很好,我得到了很好的结果
试验
有人能给我解释一下这种行为,以及我怎样才能完成这个功能吗?

lo8azlld

lo8azlld1#

我相信你误解了你所说的真正意义。看起来您希望它将@[0-9]+替换为一个空字符串,但实际上它没有这样做。 re.sub 接受3个参数——一个模式、替换它的文本(某种意义上)和操作的文本。看看这个:

如你所见,我明白了 <@\u200b700796664276844612> 作为我的输出。有趣的是,如果我把它打印出来,我会得到这个:

注意它看起来和我的原文一样。原因是 \u200b 实际上是一个零宽度的空间,打印时是看不见的。
所以,实际上,escape\u提到在 @ 所以在不和谐的情况下,它不会被提及,而仅仅是文本。

相关问题