Решение, которое я использовал, - вставить пробел нулевой ширины после '@'. Это не изменит внешний вид текста («нулевой ширины»), но дополнительный символ предотвращает пинг. Он имеет код юникода 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)