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

如何在SendMessage中正确使用MessageEntity实现点击文本跳转URL

Telegram Bot使用MessageEntity实现可点击跳转链接失效问题

问题说明

希望通过MessageEntity实现用户点击消息文本后跳转到指定URL的效果,运行代码后仅向聊天窗口发送了「Some text」,没有出现预期可点击的「Link」文本。

错误代码示例

MessageEntity messageEntity = new MessageEntity();
messageEntity.setType("text_link");
messageEntity.setUrl("https://google.com");
messageEntity.setText("Link");
messageEntity.setOffset(0);
messageEntity.setLength(0);

List<MessageEntity> entities = new ArrayList<>();
entities.add(messageEntity);

SendMessage message = new SendMessage();
message.setChatId(String.valueOf(textChat_id));
message.setEntities(entities);
message.setText("Some text");
                
try {
  execute(message);
} catch (TelegramApiException e) {
  e.printStackTrace();
}

问题原因与修正点

  • messageEntity.setText("Link")为冗余配置,text_link类型的MessageEntity不需要单独设置文本,链接关联的文本直接取自SendMessage设置的消息正文
  • 将message.setText("Some text")替换为message.setText("Link"),保证发送的消息正文中存在要设置为链接的文本
  • setOffset(0)表示链接实体的起始位置为文本「Link」的开头,需与待标记为链接的文本在正文中的实际起始位置匹配
  • setLength(4)表示链接实体覆盖的字符长度为「Link」的长度,原代码错误设置为0会导致实体不生效

修正后代码示例

MessageEntity messageEntity = new MessageEntity();
messageEntity.setType("text_link");
messageEntity.setUrl("https://google.com");
//messageEntity.setText("Link");
messageEntity.setOffset(0);
messageEntity.setLength(4);

List<MessageEntity> entities = new ArrayList<>();
entities.add(messageEntity);

SendMessage message = new SendMessage();
message.setChatId(String.valueOf(textChat_id));
message.setEntities(entities);
message.setText("Link");
try {
  execute(message);
} catch (TelegramApiException e) {
  e.printStackTrace();
}

内容的提问来源于stack exchange,提问作者Alexander Fox

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:06:02