Skip to content

Commit

Permalink
feat(kaiheila): support reaction events, fix #296
Browse files Browse the repository at this point in the history
  • Loading branch information
shigma committed Jul 4, 2021
1 parent e96a920 commit 173ce85
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 11 deletions.
6 changes: 3 additions & 3 deletions packages/adapter-discord/src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export const adaptAuthor = (author: DC.User): AuthorInfo => ({
nickname: author.username,
})

export async function adaptMessage(bot: DiscordBot, meta: DC.Message, session: Partial<Session.Payload<Session.MessageAction>> = {}) {
export async function adaptMessage(bot: DiscordBot, meta: DC.Message, session: Partial<Session> = {}) {
if (meta.author) {
session.author = adaptAuthor(meta.author)
session.userId = meta.author.id
Expand Down Expand Up @@ -106,7 +106,7 @@ export async function adaptMessage(bot: DiscordBot, meta: DC.Message, session: P
return session
}

async function adaptMessageSession(bot: DiscordBot, meta: DC.Message, session: Partial<Session.Message> = {}) {
async function adaptMessageSession(bot: DiscordBot, meta: DC.Message, session: Partial<Session> = {}) {
await adaptMessage(bot, meta, session)
session.messageId = meta.id
session.timestamp = new Date(meta.timestamp).valueOf() || Date.now()
Expand All @@ -119,7 +119,7 @@ async function adaptMessageSession(bot: DiscordBot, meta: DC.Message, session: P
}

export async function adaptSession(bot: DiscordBot, input: DC.Payload) {
const session: Partial<Session.Payload<Session.MessageAction>> = {
const session: Partial<Session> = {
selfId: bot.selfId,
platform: 'discord',
}
Expand Down
2 changes: 1 addition & 1 deletion packages/adapter-discord/src/ws.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ export default class WsClient extends Adapter.WsClient<'discord'> {
renameProperty(self, 'selfId', 'userId')
Object.assign(bot, self)
logger.debug('session_id ' + bot._sessionId)
resolve()
return resolve()
}
const session = await adaptSession(bot, parsed)
if (session) this.dispatch(session)
Expand Down
2 changes: 1 addition & 1 deletion packages/adapter-kaiheila/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ export interface Data extends MessageBase {
type AttachmentType = 'image' | 'video' | 'audio' | 'file'
type NoticeType =
| 'message_btn_click'
| 'add_reaction' | 'deleted_reaction'
| 'added_reaction' | 'deleted_reaction'
| 'updated_message' | 'deleted_message'
| 'joined_guild' | 'exited_guild'
| 'updated_guild_member'
Expand Down
29 changes: 23 additions & 6 deletions packages/adapter-kaiheila/src/utils.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { KaiheilaBot } from './bot'
import { Session, segment, MessageInfo, AuthorInfo, GroupInfo, UserInfo } from 'koishi-core'
import { Session, segment, MessageBase, AuthorInfo, GroupInfo, UserInfo } from 'koishi-core'
import { camelCase } from 'koishi-utils'
import * as KHL from './types'

Expand All @@ -20,7 +20,7 @@ export const adaptAuthor = (author: KHL.Author): AuthorInfo => ({
nickname: author.nickname,
})

function adaptMessage(base: KHL.MessageBase, meta: KHL.MessageMeta, session: MessageInfo = {}) {
function adaptMessage(base: KHL.MessageBase, meta: KHL.MessageMeta, session: MessageBase = {}) {
if (meta.author) {
session.author = adaptAuthor(meta.author)
session.userId = meta.author.id
Expand All @@ -38,7 +38,7 @@ function adaptMessage(base: KHL.MessageBase, meta: KHL.MessageMeta, session: Mes
return session
}

function adaptMessageSession(data: KHL.Data, meta: KHL.MessageMeta, session: Partial<Session.Payload<Session.MessageAction>> = {}) {
function adaptMessageSession(data: KHL.Data, meta: KHL.MessageMeta, session: Partial<Session> = {}) {
adaptMessage(data, meta, session)
session.messageId = data.msgId
session.timestamp = data.msgTimestamp
Expand All @@ -52,7 +52,7 @@ function adaptMessageSession(data: KHL.Data, meta: KHL.MessageMeta, session: Par
return session
}

function adaptMessageCreate(data: KHL.Data, meta: KHL.MessageExtra, session: Partial<Session.Payload<Session.MessageAction>>) {
function adaptMessageCreate(data: KHL.Data, meta: KHL.MessageExtra, session: Partial<Session>) {
adaptMessageSession(data, meta, session)
session.groupId = meta.guildId
session.channelName = meta.channelName
Expand All @@ -65,15 +65,22 @@ function adaptMessageCreate(data: KHL.Data, meta: KHL.MessageExtra, session: Par
}
}

function adaptMessageModify(data: KHL.Data, meta: KHL.NoticeBody, session: Partial<Session.Payload<Session.MessageAction>>) {
function adaptMessageModify(data: KHL.Data, meta: KHL.NoticeBody, session: Partial<Session>) {
adaptMessageSession(data, meta, session)
session.messageId = meta.msgId
session.channelId = meta.channelId
}

function adaptReaction(body: KHL.NoticeBody, session: Partial<Session>) {
session.channelId = body.channelId
session.messageId = body.msgId
session.userId = body.userId
session['emoji'] = body.emoji.id
}

export function adaptSession(bot: KaiheilaBot, input: any) {
const data = camelCase<KHL.Data>(input)
const session: Partial<Session.Payload<Session.MessageAction>> = {
const session: Partial<Session> = {
selfId: bot.selfId,
platform: 'kaiheila',
}
Expand All @@ -90,6 +97,16 @@ export function adaptSession(bot: KaiheilaBot, input: any) {
session.type = 'message-deleted'
adaptMessageModify(data, body, session)
break
case 'added_reaction':
case 'private_added_reaction':
session.type = 'reaction-added'
adaptReaction(body, session)
break
case 'deleted_reaction':
case 'private_deleted_reaction':
session.type = 'reaction-deleted'
adaptReaction(body, session)
break
default: return
}
} else {
Expand Down
6 changes: 6 additions & 0 deletions packages/koishi-core/src/session.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@ export namespace Session {
'emotion': {}
}
}
'reaction-added': {}
'reaction-deleted': {
'one': {}
'all': {}
'emoji': {}
}
}

export interface GroupMemberChangeType {
Expand Down

0 comments on commit 173ce85

Please sign in to comment.