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
模块)目前支持的事件:
TelegramEvent
TelegramMessageRelatedEvent
TelegramMessageEvent
TelegramChatGroupMessageEvent
TelegramSuperGroupMessageEvent
TelegramChannelMessageEvent
TelegramPrivateMessageEvent
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