游戏机器人回调按钮无响应,如何实现点击后返回用户ID的功能?
游戏机器人回调按钮无响应,如何实现点击后返回用户ID的功能?
看起来你在游戏机器人的回调按钮上卡壳了,我来帮你捋捋问题出在哪,以及怎么改才能实现点击按钮返回用户ID的功能~
首先说你代码里最明显的坑:那行if(callback.eventPayload) return;完全写反了逻辑!回调按钮触发的请求里,eventPayload(或者你用的框架里对应的回调数据字段)正是按钮携带的关键标识信息,你这行代码直接把带有这个字段的请求都拦截返回了,那按钮点击的请求根本到不了后面的show_id处理逻辑,自然没响应啊!
然后是事件监听的类型问题,你用了message_event还试过Callback_new,这得看你用的具体机器人框架——不同框架对回调按钮的事件命名不一样,比如有的框架是callback_query,有的是message_event但需要按钮配置正确的payload。你得先确认你用的框架里,回调按钮点击对应的正确事件监听名称,替换掉当前的事件名。
接下来给你修正后的代码示例,你可以参考调整:
// 先确保这里的事件名是你框架对应的回调按钮事件,比如message_event或者callback_query updates.on('message_event', async (callback) => { // 先找到对应用户,避免找不到用户导致报错 let user = users.find(x => x.id === callback.senderId); if (!user) { return callback.answer('未找到你的用户信息哦'); } // 匹配按钮的command,这里要和你创建按钮时设置的command一致 if (callback.command === 'show_id') { // 用answer方法返回用户ID,show_alert设为true会弹出提示框,有的框架可能需要不同参数 return callback.answer(`你的用户ID是:${user.id}`, { show_alert: true }); } // 其他类型的回调可以在这里扩展处理 });
还有几个要注意的细节:
- 你创建按钮的时候,一定要把按钮的
command(或者payload里的标识)设置为show_id,不然回调里的callback.command匹配不到,自然不会触发返回ID的逻辑。 - 检查
users数组里是否正确存储了用户的id数据,如果find返回undefined,会导致后面的user.id报错,所以加个用户存在性判断很有必要。 - 如果还是没反应,去你用的框架文档里查一下
answer方法的参数要求,比如有的框架需要指定返回的消息类型,或者是否需要额外的配置才能触发弹窗/消息。
内容来源于stack exchange
相关产品推荐
相关产品推荐

