如何拆分超长Telegram消息并按顺序发送?
解决Telegram消息过长拆分问题(按每100条拆分)
你可以修改函数,让它返回一个消息数组,每个消息包含最多100条条目,同时保留头脚信息并添加分页标识,这样机器人就能按顺序发送拆分后的消息了。
修改后的代码如下:
function SearchbyProjectName(Prjct){ var projectNON = GetAllProjectNON(); var project = GetAllProject(); var num = 1; const allLocation = []; var baseHeader = 'ALL LOCATION\nProject: ' + Prjct + '\n🗓 : Tuesday, 24 Jan 2023 15:10:34\n'; // 替换为你实际的header内容 var footer = 'xxxfooterxxx'; // 收集所有条目(保留原有逻辑) for (var row=0; row<projectNON.length; row++) { if(projectNON[row][3]==Prjct){ var resiNON = num++ + '. ) ' + '/d_' + projectNON[row][6] + '\n\n'; allLocation.push(resiNON); } } for (var row=0; row<project.length; row++) { if(project[row][3]==Prjct){ var resi = num++ + '. ) ' + '/d_' + project[row][6] + '\n\n'; allLocation.push(resi); } } // 拆分消息:每100条为一页 const pageSize = 100; const messages = []; const totalPages = Math.ceil(allLocation.length / pageSize); for (let page = 0; page < totalPages; page++) { // 截取当前页的条目 const startIndex = page * pageSize; const endIndex = startIndex + pageSize; const currentItems = allLocation.slice(startIndex, endIndex); // 生成带分页标识的当前页header const pageHeader = baseHeader + `(第${page+1}/${totalPages}页)\n`; // 拼接当前页完整内容 const pageContent = pageHeader + currentItems.join('') + footer; messages.push(pageContent); } return messages ; }
代码说明:
- 将原固定
header改为baseHeader,动态添加分页标识,让用户明确当前内容是第几部分。 - 用
pageSize变量设置每页条目数(这里设为100,可按需调整)。 - 通过
slice方法拆分条目数组,循环生成每条消息的完整内容。 - 最终返回消息数组,机器人只需遍历数组依次发送即可。
使用方式:
调用函数后得到字符串数组,遍历发送:
const messages = SearchbyProjectName("PTT2"); // 遍历发送每条消息 messages.forEach(msg => { // 调用你的Telegram消息发送API,示例:bot.sendMessage(chatId, msg); });
这样既规避了Telegram的字符限制,又能保证内容按顺序发送、条目编号连续。
内容的提问来源于stack exchange,提问作者Angely Fransiska
相关产品推荐
相关产品推荐

