Skip to content

Releases: simple-robot/simbot-component-telegram

v0.0.4

15 Jun 12:21
98e9363
Compare
Choose a tag to compare

对应核心版本: v4.0.0

我们欢迎并期望着您的的反馈协助
感谢您的贡献与支持!

也欢迎您为我们献上一颗 star,这是对我们最大的鼓励与认可!

What's Changed

👀 其他变更

Full Changelog: v0.0.3...v0.0.4

v0.0.3

09 Jun 14:35
e3ed55e
Compare
Choose a tag to compare

对应核心版本: v4.0.0-RC3

我们欢迎并期望着您的的反馈协助
感谢您的贡献与支持!

也欢迎您为我们献上一颗 star,这是对我们最大的鼓励与认可!

What's Changed

👀 其他变更

Full Changelog: v0.0.2...v0.0.3

v0.0.2

27 Apr 15:05
413f326
Compare
Choose a tag to compare

对应核心版本: v4.0.0-beta3

我们欢迎并期望着您的的反馈协助
感谢您的贡献与支持!

也欢迎您为我们献上一颗 star,这是对我们最大的鼓励与认可!

Warning

目前版本处于 dev 阶段,代表此版本是一个开发预览版,可能不稳定、可能随时发生更改、且不保证可用性。

现在可以简单的发送图片、文档、音频等资源性消息元素了。

Full Changelog: v0.0.1-dev2...v0.0.2

v0.0.1-dev2

15 Apr 12:21
5833ba8
Compare
Choose a tag to compare
v0.0.1-dev2 Pre-release
Pre-release

对应核心版本: 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

11 Apr 08:36
c43ff11
Compare
Choose a tag to compare
v0.0.1-dev1 Pre-release
Pre-release

对应核心版本: 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