@shangxueink/koishi-plugin-qq-markdown-button
Version:
[<ruby>**QQ机器人按钮菜单**<rp>(</rp><rt>点我查看使用说明</rt><rp>)</rp></ruby>](https://www.npmjs.com/package/@shangxueink/koishi-plugin-qq-markdown-button) 自用小插件咪~ 使用json文件设置你的机器人菜单这样就不需要一堆配置项还很烧脑了。自用插件哦~
33 lines (25 loc) • 967 B
text/typescript
import { Session } from 'koishi'
function isRecord(value: unknown): value is Record<string, unknown> {
return typeof value === 'object' && value !== null
}
function getNestedValue(source: unknown, paths: string[]): unknown {
let current: unknown = source
for (const key of paths) {
if (!isRecord(current) || !(key in current)) {
return undefined
}
current = current[key]
}
return current
}
export function isSupportedPlatform(session: Session): boolean {
return session.platform === 'qq' || session.platform === 'qqguild'
}
export function getInteractionId(session: Session): string {
const interactionId = getNestedValue(session.event, ['_data', 'id'])
return typeof interactionId === 'string' ? interactionId : ''
}
export function getButtonData(session: Session): string | undefined {
const buttonData = getNestedValue(session.event, ['button', 'data'])
return typeof buttonData === 'string' ? buttonData : undefined
}