自定义表情在部分平台上反应顺序异常问题求助
解决Discord投票机器人自定义表情反应移动端顺序异常问题
问题根源
你碰到的这个问题本质是Discord不同客户端对自定义表情反应的排序逻辑差异导致的:
- PC客户端会严格遵循你添加反应的顺序来展示表情
- 移动端客户端则会自动对自定义表情反应按表情ID的升序重新排序,完全不保留添加顺序
你的代码虽然用await保证了表情是按数组顺序依次添加的,但移动端的自动排序逻辑直接覆盖了这个顺序,所以看起来是"半随机"(实际是按ID排序)的显示效果,加延迟自然也解决不了——毕竟问题出在客户端侧的排序规则,而非代码执行顺序。
解决方案
要让PC和移动端的表情显示顺序统一,你需要调整ratings数组的顺序,使其和移动端的ID升序排序结果一致。这样无论客户端用哪种逻辑,最终显示的顺序都会完全匹配。
步骤1:对表情ID进行升序排序
先把你的表情ID转换成数值后从小到大排序:
原ID数组:
["579368037761810442", "579368037111693312", "579368036528816158", "579368037682249728", "579368036809834517"]
排序后的ID数组(升序):
["579368036528816158", "579368036809834517", "579368037111693312", "579368037682249728", "579368037761810442"]
步骤2:替换代码中的数组顺序
把原代码里的ratings数组换成排序后的版本,这样PC端按添加顺序显示,移动端按ID排序后显示的顺序会和PC端完全一致:
const ratings = ["579368036528816158", "579368036809834517", "579368037111693312", "579368037682249728", "579368037761810442"]; async function ratabalize(message) { for (var i = 0; i < ratings.length; i++) { await message.react(ratings[i]); } }
额外提醒
如果你的投票需要特定的逻辑顺序(比如对应1星到5星的表情),要先确认每个ID对应的表情,再按照ID升序的规则来排列这些表情的ID,确保最终两端显示的顺序完全符合你的投票需求。
内容的提问来源于stack exchange,提问作者Spu7Nix
相关产品推荐
相关产品推荐

