如何让Discord机器人仅将消息中的Ping内容转为代码格式而非整段消息?
解决方案
你可以用正则表达式精准匹配消息里的Discord用户提及格式,只把这些Ping部分单独用反引号包裹,而非将整条消息塞进代码块。修改后的代码如下:
if (message.content.includes('@')) { if (message.author.bot) { const channel = client.channels.cache.get('1204760182567993354') //PING BLOCKER MHC // 匹配Discord两种用户提及格式:<@123> 或 <@!123> const processedContent = message.content.replace(/(<@!?\d+>)/g, '`$1`') channel.send(processedContent) } }
代码说明:
/(<@!?\d+>)/g:这是全局匹配的正则表达式,专门识别Discord用户提及:<@匹配提及的固定开头!?兼容带感叹号的昵称提及格式(比如<@!456>)\d+匹配用户ID的一串数字>匹配提及的固定结尾g表示找出消息里所有符合的提及,而非只替换第一个
replace(...):把每个匹配到的提及内容(比如<@123>)替换成`<@123>`,这样只有Ping部分会变成代码格式,其他文本保持原样式。
处理后效果示例:原消息Hello <@123> how are you?会显示为Hello <@123> how are you?(视觉上就是Ping部分被代码样式包裹,其他文本正常显示)。
内容的提问来源于stack exchange,提问作者DevilPlays10
相关产品推荐
相关产品推荐

