koishi-plugin-message-counter
Version:
Koishi 的消息数量统计插件。生成各种发言排行榜。
72 lines (71 loc) • 6.59 kB
TypeScript
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 {};