UNPKG

koishi-plugin-message-counter

Version:

Koishi 的消息数量统计插件。生成各种发言排行榜。

72 lines (71 loc) 6.59 kB
import { Context, Schema } from "koishi"; export declare const name = "message-counter"; export declare const inject: { required: string[]; optional: string[]; }; export declare const usage = "## \u6CE8\u610F\u4E8B\u9879\n\n- \u4EC5\u8BB0\u5F55\u7FA4\u804A\u6D88\u606F\u3002\n- \u521D\u59CB\u5316\uFF1A\u9700\u8981\u6743\u9650\u7B49\u7EA7 3 \u7EA7\u3002\n\n## \u5173\u952E\u6307\u4EE4\n\n- `messageCounter.\u67E5\u8BE2 [\u6307\u5B9A\u7528\u6237]`: \u67E5\u8BE2\u6307\u5B9A\u7528\u6237\u7684\u53D1\u8A00\u6B21\u6570\u4FE1\u606F\uFF08\u6B21\u6570[\u6392\u540D]\uFF09\u3002\n\n - `--yesterday`/`-d`/`-w`/`-m`/`-y`/`-t`: \u5206\u522B\u67E5\u8BE2\u6628\u65E5/\u4ECA\u65E5/\u672C\u5468/\u672C\u6708/\u4ECA\u5E74/\u603B\u53D1\u8A00\u6B21\u6570[\u6392\u540D] \u3002\n - `--ydag`/`--dag`/`--wag`/`--mag`/`--yag`/`-a`: \u5206\u522B\u67E5\u8BE2\u8DE8\u7FA4\u6628\u65E5/\u4ECA\u65E5/\u672C\u5468/\u672C\u6708/\u4ECA\u5E74/\u603B\u53D1\u8A00\u6B21\u6570[\u6392\u540D]\u3002\n\n\n- `messageCounter.\u6392\u884C\u699C [\u663E\u793A\u7684\u4EBA\u6570]`: \u53D1\u8A00\u6392\u884C\u699C\uFF0C\u4F7F\u7528\u4EE5\u4E0B\u9009\u9879\u6307\u5B9A\u7C7B\u578B\uFF1A\n\n - `--whites`: \u767D\u540D\u5355\uFF0C\u53EA\u663E\u793A\u767D\u540D\u5355\u7528\u6237\uFF0C\u4EE5\u7A7A\u683C\u3001\u4E2D\u82F1\u6587\u9017\u53F7\u548C\u987F\u53F7\u4F5C\u4E3A\u5206\u9694\u7B26\u3002\n - `--blacks`: \u9ED1\u540D\u5355\uFF0C\u4E0D\u663E\u793A\u9ED1\u540D\u5355\u7528\u6237\uFF0C\u4EE5\u7A7A\u683C\u3001\u4E2D\u82F1\u6587\u9017\u53F7\u548C\u987F\u53F7\u4F5C\u4E3A\u5206\u9694\u7B26\u3002\n - `--yesterday`/`-d`/`-w`/`-m`/`-y`/`-t`: \u5206\u522B\u67E5\u8BE2\u6628\u65E5/\u4ECA\u65E5/\u672C\u5468/\u672C\u6708/\u4ECA\u5E74/\u603B\u53D1\u8A00\u6392\u884C\u699C\u3002\n - `--ydag`/`--dag`/`--wag`/`--mag`/`--yag`/`--dragon`: \u5206\u522B\u67E5\u8BE2\u8DE8\u7FA4\u6628\u65E5/\u4ECA\u65E5/\u672C\u5468/\u672C\u6708/\u4ECA\u5E74/\u603B\u53D1\u8A00\u6392\u884C\u699C\uFF08\u5723\u9F99\u738B\u699C\uFF09\u3002\n - \u9ED8\u8BA4\u4E3A\u4ECA\u65E5\u53D1\u8A00\u699C\u3002\n\n- `messageCounter.\u7FA4\u6392\u884C\u699C [number:number]`: \u5404\u4E2A\u7FA4\u804A\u7684\u53D1\u8A00\u6392\u884C\u699C\uFF0C\u53EF\u4EE5\u6307\u5B9A\u663E\u793A\u7684\u6570\u91CF\uFF0C\u4E5F\u53EF\u4EE5\u4F7F\u7528\u4EE5\u4E0B\u9009\u9879\u6765\u6307\u5B9A\u6392\u884C\u699C\u7684\u7C7B\u578B\uFF1A\n\n - `-s`: \u6307\u5B9A\u7528\u6237\u7684\u7FA4\u53D1\u8A00\u6392\u884C\u699C\uFF0C\u53EF\u7528 at \u6216 \u7528\u6237 ID \u6307\u5B9A\u3002\n - `--whites`: \u767D\u540D\u5355\uFF0C\u53EA\u663E\u793A\u767D\u540D\u5355\u7FA4\uFF0C\u4EE5\u7A7A\u683C\u3001\u4E2D\u82F1\u6587\u9017\u53F7\u548C\u987F\u53F7\u4F5C\u4E3A\u5206\u9694\u7B26\u3002\n - `--blacks`: \u9ED1\u540D\u5355\uFF0C\u4E0D\u663E\u793A\u9ED1\u540D\u5355\u7FA4\uFF0C\u4EE5\u7A7A\u683C\u3001\u4E2D\u82F1\u6587\u9017\u53F7\u548C\u987F\u53F7\u4F5C\u4E3A\u5206\u9694\u7B26\u3002\n - `-d`/`-w`/`-m`/`-y`/`-t`/`--yesterday`: \u5206\u522B\u67E5\u8BE2\u6628\u65E5/\u4ECA\u65E5/\u672C\u5468/\u672C\u6708/\u4ECA\u5E74/\u603B\u53D1\u8A00\u6392\u884C\u699C\uFE0F\u3002\n - \u9ED8\u8BA4\u4E3A\u4ECA\u65E5\u53D1\u8A00\u699C\u3002\n\n## \u81EA\u5B9A\u4E49\u6C34\u5E73\u67F1\u72B6\u56FE 3\n\n1. \u7528\u6237\u56FE\u6807:\n\n- \u652F\u6301\u4E3A\u540C\u4E00\u7528\u6237\u6DFB\u52A0\u591A\u4E2A\u56FE\u6807\uFF0C\u5B83\u4EEC\u4F1A\u540C\u65F6\u663E\u793A\u3002\n- \u5728 `data/messageCounterIcons` \u6587\u4EF6\u5939\u4E0B\u6DFB\u52A0\u7528\u6237\u56FE\u6807\uFF0C\u6587\u4EF6\u540D\u4E3A\u7528\u6237 ID (\u4F8B\u5982 `1234567890.png`)\u3002\n- \u591A\u4E2A\u56FE\u6807\u7684\u6587\u4EF6\u540D\u9700\u5F62\u5982 `1234567890-1.png`\u3001 `1234567890-2.png` \u3002\n\n2. \u67F1\u72B6\u6761\u80CC\u666F\uFF1A\n\n- \u652F\u6301\u4E3A\u540C\u4E00\u7528\u6237\u6DFB\u52A0\u591A\u4E2A\u80CC\u666F\u56FE\u7247\uFF0C\u63D2\u4EF6\u4F1A\u968F\u673A\u9009\u62E9\u4E00\u4E2A\u663E\u793A\u3002\n- \u5728 `data/messageCounterBarBgImgs` \u6587\u4EF6\u5939\u4E0B\u6DFB\u52A0\u6C34\u5E73\u67F1\u72B6\u6761\u80CC\u666F\u56FE\u7247\u3002\n- \u591A\u4E2A\u56FE\u7247\u7684\u6587\u4EF6\u540D\u9700\u5F62\u5982 `1234567890-1.png`\u3001`1234567890-2.png`\u3002\n- \u5EFA\u8BAE\u56FE\u7247\u5C3A\u5BF8\u4E3A 850x50 \u50CF\u7D20\uFF0C\u6587\u4EF6\u540D\u4E3A\u7528\u6237 ID (\u4F8B\u5982`1234567890.png`)\u3002\n\n> \u91CD\u542F\u63D2\u4EF6\u4EE5\u4F7F\u66F4\u6539\u751F\u6548\u3002\n\n## QQ \u7FA4\n\n- 956758505"; export interface Config { isTimeInfoSupplementEnabled: boolean; isUserMessagePercentageVisible: boolean; defaultMaxDisplayCount: number; isBotMessageTrackingEnabled: boolean; isTextToImageConversionEnabled: boolean; autoPush: boolean; leaderboardGenerationWaitTime: number; pushChannelIds: string[]; enableMostActiveUserMuting: boolean; dragonKingDetainmentTime: number; muteGuildIds: string[]; detentionDuration: number; imageType: "png" | "jpeg" | "webp"; width: number; isLeaderboardToHorizontalBarChartConversionEnabled: boolean; isFirstProgressFullyVisible: boolean; horizontalBarChartStyle: string; maxHorizontalBarLabelLengthBeforeTruncation: number; waitUntil: "load" | "domcontentloaded" | "networkidle0" | "networkidle2"; shouldMoveIconToBarEndLeft: boolean; horizontalBarBackgroundOpacity: number; horizontalBarBackgroundFullOpacity: number; dailyScheduledTimers: string[]; shouldSendDailyLeaderboardAtMidnight: boolean; shouldSendLeaderboardNotificationsToAllChannels: boolean; excludedLeaderboardChannels: string[]; delayBetweenGroupPushesInSeconds: number; isGeneratingRankingListPromptVisible: boolean; groupPushDelayRandomizationSeconds: number; hiddenUserIdsInLeaderboard: string[]; hiddenChannelIdsInLeaderboard: string[]; isYesterdayCommentRankingDisabled: boolean; backgroundType: string; apiBackgroundConfig: apiBackgroundConfig; backgroundValue: string; } export declare const Config: Schema<Config>; declare module "koishi" { interface Tables { message_counter_records: MessageCounterRecord; } } interface apiBackgroundConfig { apiUrl: string; apiKey: string; responseType: string; } interface MessageCounterRecord { id: number; channelId: string; channelName: string; userId: string; username: string; userAvatar: string; todayPostCount: number; thisWeekPostCount: number; thisMonthPostCount: number; thisYearPostCount: number; totalPostCount: number; yesterdayPostCount: number; } export declare function apply(ctx: Context, config: Config): Promise<void>; export {};