You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义表情在部分平台上反应顺序异常问题求助

解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:02:41