Releases: simple-robot/simbot-component-telegram
Releases · simple-robot/simbot-component-telegram
v0.0.2
对应核心版本: v4.0.0-beta3
也欢迎您为我们献上一颗 star,这是对我们最大的鼓励与认可!
Warning
目前版本处于 dev 阶段,代表此版本是一个开发预览版,可能不稳定、可能随时发生更改、且不保证可用性。
现在可以简单的发送图片、文档、音频等资源性消息元素了。
Full Changelog: v0.0.1-dev2...v0.0.2
v0.0.1-dev2
对应核心版本: v4.0.0-beta3
Warning
目前版本处于 dev 阶段,代表此版本是一个开发预览版,可能不稳定、可能随时发生更改、且不保证可用性。
也欢迎您为我们献上一颗 star,这是对我们最大的鼓励与认可!
What's Changed
👀 其他变更
- 优化消息事件相关的类型继承关系结构;增加部分对发送文本消息以及MessageEntity的元素支持 by @ForliyScarlet in #2
- 支持图片消息元素的发送与接收 by @ForliyScarlet in #3
- 增加对 Audio 的发送、接收支持;增加 TelegramProtectContent、TelegramDisableNotification 标记元素支持 by @ForliyScarlet in #4
- 增加 Document API 和 LinkPreviewOptions 的支持;内部的Resolver处理优化 by @ForliyScarlet in #5
Full Changelog: v0.0.1-dev1...v0.0.1-dev2
v0.0.1-dev1
对应核心版本: v4.0.0-beta3
Warning
目前版本处于 dev 阶段,代表此版本是一个开发预览版,可能不稳定、可能随时发生更改、且不保证可用性。
也欢迎您为我们献上一颗 star,这是对我们最大的鼓励与认可!
此版本在使用 stdlib 模块时,可以监听到所有的事件(因为Telegram所有的事件都在一个 Update 类型中,这还挺方便的):
val bot = BotFactory.create(TOKEN) { coroutineContext = Dispatchers.IO // 可选地配置 engine,比如配置一个代理 apiClientEngine = CIO.create { proxy = ProxyBuilder.http("http://127.0.0.1:7790") } // 配置 longPolling 的值即代表启用主动拉取事件的形式,*类似于*其他组件中那种 ws 接收事件的方式。 // 不配置、配置为 `null` 则代表不启用。 longPolling = LongPolling( limit = 100, timeout = 10.minutes.inWholeSeconds.toInt(), allowedUpdates = setOf(UpdateValues.MESSAGE_NAME) ) } // 使用 `subscribe` 订阅所有事件、根据类型(以及名称)订阅事件 bot.subscribe { event -> println("Event: $event") } // 使用 onXxx 根据某个具体事件的扩展来订阅事件,等同于订阅一个对应类型、名称的事件。 // 比如此处,订阅事件类型为 `Message` 且事件名为 `"message"` 的事件。 bot.onMessage { event, message -> println("event: ${event}") println("message: ${message}") } // 启动并挂起bot bot.start() bot.join()Note
如果不配置 longPolling,也就是只使用 Telegram 的 webhook 的形式接收事件,
那么你需要自行启动一个 HTTP 服务,并将接收到的请求体的 JSON 字符串(或解析后的 Update 实体)提供给 bot。
val bot = ... bot.start() // 假设你使用 Kror Server embeddedServer(Netty, port = 80) { routing { get ("/YOUR_ROUTE") { // The `Update` JSON string. val raw = call.receiveText() // Push `Update` to bot. Maybe in try-catch? Myabe in launch { ... } ? bot.pushUpdate(Update.decodeFromRawJson(raw), raw) // respond a result to Telegram call.respondText("""{"ok":true}""") } } }.start(wait = true)核心组件模块(core模块)目前支持的事件:
TelegramEventTelegramMessageRelatedEventTelegramMessageEventTelegramChatGroupMessageEventTelegramSuperGroupMessageEventTelegramChannelMessageEventTelegramPrivateMessageEvent
TelegramUnsupportedEvent(一个兜底用的事件类型,可以借助此类型来监听到所有stdlib模块中的所有尚未提供专属类型的事件类型。)
目前:
- 发送/回复文本消息、直接借助API发送消息、直接转发消息 (
send/reply(MessageContent)。 - 接收消息内的纯文本内容 (
MessageContent.plainText) - 暂不支持解析为
Messages(MessageContent.messages)
Full Changelog: https://github.com/simple-robot/simbot-component-telegram/commits/v0.0.1-dev1