Skip to content

Commit

Permalink
fix(telegram): add properties to platform-specific events
Browse files Browse the repository at this point in the history
  • Loading branch information
shigma committed Mar 31, 2023
1 parent 759c608 commit a5076c4
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 18 deletions.
2 changes: 1 addition & 1 deletion adapters/telegram/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@satorijs/adapter-telegram",
"description": "Telegram Adapter for Satorijs",
"version": "3.7.1",
"version": "3.7.2",
"main": "lib/index.js",
"typings": "lib/index.d.ts",
"files": [
Expand Down
19 changes: 3 additions & 16 deletions adapters/telegram/src/bot.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { arrayBufferToBase64, Bot, Context, Dict, Fragment, h, Logger, Quester, Schema, SendOptions, Session, Time, Universal } from '@satorijs/satori'
import * as Telegram from './types'
import { adaptGuildMember, adaptUser } from './utils'
import { adaptAuthorMeta, adaptGuildMember, adaptMessageMeta, adaptUser } from './utils'
import { TelegramMessenger } from './message'
import { HttpServer } from './server'
import { HttpPolling } from './polling'
Expand Down Expand Up @@ -106,7 +106,6 @@ export class TelegramBot<T extends TelegramBot.Config = TelegramBot.Config> exte
return segs
}

session.messageId = message.message_id.toString()
session.timestamp = message.date * 1000
const segments: h[] = []
// topic messages are reply chains, if a message is forum_topic_created, the session shoudn't have a quote.
Expand Down Expand Up @@ -157,20 +156,8 @@ export class TelegramBot<T extends TelegramBot.Config = TelegramBot.Config> exte

session.elements = segments
session.content = segments.join('')
session.userId = message.from.id.toString()
session.author = adaptUser(message.from)
if (message.chat.type === 'private') {
session.subtype = 'private'
session.channelId = 'private:' + message.chat.id
} else {
session.subtype = 'group'
session.guildId = message.chat.id.toString()
if (message.is_topic_message) {
session.channelId = message.message_thread_id.toString()
} else {
session.channelId = session.guildId
}
}
adaptMessageMeta(session, message)
adaptAuthorMeta(session, message.from)
}

async sendMessage(channelId: string, fragment: Fragment, guildId?: string, options?: SendOptions) {
Expand Down
27 changes: 26 additions & 1 deletion adapters/telegram/src/utils.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { defineProperty, hyphenate, Logger, Universal } from '@satorijs/satori'
import { defineProperty, hyphenate, Logger, Session, Universal } from '@satorijs/satori'
import { TelegramBot } from './bot'
import * as Telegram from './types'

Expand All @@ -15,6 +15,29 @@ export const adaptUser = (data: Telegram.User): Universal.User => ({

export const adaptGuildMember = (data: Telegram.ChatMember): Universal.GuildMember => adaptUser(data.user)

export function adaptMessageMeta(session: Session, message: Telegram.Message) {
if (!message) return
session.messageId = message.message_id.toString()
if (message.chat.type === 'private') {
session.subtype = 'private'
session.channelId = 'private:' + message.chat.id
} else {
session.subtype = 'group'
session.guildId = message.chat.id.toString()
if (message.is_topic_message) {
session.channelId = message.message_thread_id.toString()
} else {
session.channelId = session.guildId
}
}
}

export function adaptAuthorMeta(session: Session, from: Telegram.User) {
if (!from) return
session.userId = from.id.toString()
session.author = adaptUser(from)
}

export async function handleUpdate(update: Telegram.Update, bot: TelegramBot) {
logger.debug('receive %s', JSON.stringify(update))
const session = bot.session()
Expand Down Expand Up @@ -52,6 +75,8 @@ export async function handleUpdate(update: Telegram.Update, bot: TelegramBot) {
if (subtype) {
session.type = 'telegram'
session.subtype = hyphenate(subtype)
adaptMessageMeta(session, update[subtype].message)
adaptAuthorMeta(session, update[subtype].from)
}
}

Expand Down

0 comments on commit a5076c4

Please sign in to comment.