koishi-plugin-wordle-game
Version:
Koishi 的 Wordle | 汉兜 | 词影 | Numberle | Math | Lewdle 游戏插件。
185 lines (184 loc) • 8.79 kB
TypeScript
import { Context, Schema } from "koishi";
export declare const inject: {
required: string[];
optional: string[];
};
export declare const name = "wordle-game";
export declare const usage = "## \u4F7F\u7528\n\n1. \u542F\u7528 `monetary`\uFF0C`database` \u548C `puppeteer` \u670D\u52A1\u3002\n2. \u8BBE\u7F6E\u6307\u4EE4\u522B\u540D\u3002\n3. \u8F93\u5165 `wordleGame.\u5F00\u59CB` \u6307\u4EE4\u5F15\u5BFC\u6E38\u620F\u6A21\u5F0F\u3002\n4. \u8F93\u5165\u731C\u6D4B\u8BCD\u3002\n\n## \u6CE8\u610F\u4E8B\u9879\n\n- \u82E5\u8F93\u5165\u6210\u8BED\u65F6\u51FA\u73B0\u672A\u77E5\u9519\u8BEF\uFF0C\u53EF\u68C0\u67E5 `data/wordleGame/idioms.json` \u6587\u4EF6\uFF0C\u786E\u8BA4\u62FC\u97F3\u662F\u5426\u6B63\u786E\u3002\n\n## \u7279\u6027\n\n- \u8BCD\u5F71\u6A21\u5F0F\u62E5\u6709\u7EC6\u5206\u6392\u884C\u699C\uFF0C\u53EF\u901A\u8FC7 `help` \u6307\u4EE4\u63A2\u7D22\u3002\n- \u53EF\u5728 `idioms.json` \u4E2D\u81EA\u884C\u6DFB\u52A0\u6210\u8BED\uFF08\u5982\u201C\u539F\u795E\u542F\u52A8\u201D\uFF09\uFF0C\u6CE8\u610F JSON \u683C\u5F0F\uFF0C\u672B\u9879\u65E0\u9017\u53F7\u3002\n\n## \u5173\u952E\u6307\u4EE4\n\n### `wordleGame.\u5F00\u59CB [\u5F85\u731C\u8BCD\u957F\u5EA6]`\n\n\u5F00\u59CB\u6E38\u620F\u5F15\u5BFC\u3002\n\n#### `wordleGame.\u5F00\u59CB.<\u6A21\u5F0F> [\u5F85\u731C\u8BCD\u957F\u5EA6]`\n\n- **\u53EF\u7528\u6A21\u5F0F**:\n - `\u7ECF\u5178`, `CET4/6`, `GMAT`, `GRE`, `IELTS`, `SAT`, `TOEFL`, `\u8003\u7814`, `\u4E13\u516B/\u56DB`\n - `ALL`, `Lewdle`, `Numberle`, `Math`, `\u6C49\u515C`, `\u8BCD\u5F71`\n\n- **\u901A\u7528\u9009\u9879**:\n\n - `--hard` (\u56F0\u96BE\u6A21\u5F0F)\n - \u7EFF\u8272\u7EBF\u7D22\u5FC5\u987B\u4FDD\u6301\u56FA\u5B9A\u3002\n - \u9EC4\u8272\u7EBF\u7D22\u5FC5\u987B\u91CD\u590D\u4F7F\u7528\u3002\n - \u8BCD\u5F71\u6A21\u5F0F\u4E0B\uFF0C\u63D0\u9AD8\u5339\u914D\u96BE\u5EA6\u3002\n\n - `--uhard` (\u8D85\u56F0\u96BE\u6A21\u5F0F)\n - \u57FA\u4E8E\u56F0\u96BE\u6A21\u5F0F\u3002\n - \u9EC4\u8272\u7EBF\u7D22\u5FC5\u987B\u79FB\u79BB\u5176\u539F\u4F4D\u3002\n - \u7070\u8272\u7EBF\u7D22\u4E0D\u5F97\u518D\u6B21\u4F7F\u7528\u3002\n\n - `--absurd` (\u8352\u8C2C\u6A21\u5F0F)\n - AI \u5C06\u5C3D\u91CF\u907F\u514D\u7ED9\u51FA\u7B54\u6848\uFF0C\u6BCF\u6B21\u731C\u6D4B\u4EC5\u900F\u9732\u6700\u5C11\u4FE1\u606F\uFF0C\u751A\u81F3\u53EF\u80FD\u66F4\u6362\u79D8\u5BC6\u8BCD\u3002\n - [\u73A9\u6CD5\u53C2\u8003](https://qntm.org/absurdle)\n\n - `--challenge` (\u6311\u6218\u6A21\u5F0F)\n - \u9AD8\u7EA7\u73A9\u5BB6\u9650\u5B9A\u3002\u8981\u6C42\u4ECE\u4E00\u4E2A\u7ED9\u5B9A\u7684\u76EE\u6807\u8BCD\u51FA\u53D1\uFF0C\u53CD\u5411\u63A8\u5BFC\u79D8\u5BC6\u8BCD\u3002\n - [\u73A9\u6CD5\u53C2\u8003](https://qntm.org/challenge)\n\n - `--wordles <\u6570\u91CF>`\n - \u540C\u65F6\u731C\u6D4B\u591A\u4E2A\u8BCD\uFF0C\u9ED8\u8BA4\u6570\u91CF 1 ~ 4\uFF0C\u53EF\u914D\u7F6E\u3002\n\n- **\u6C49\u515C & \u8BCD\u5F71\u4E13\u5C5E\u9009\u9879**:\n\n - `--free` (\u81EA\u7531\u6A21\u5F0F)\n - \u4EFB\u610F\u56DB\u5B57\u8BCD\u8BED\u5747\u53EF\u4F5C\u4E3A\u731C\u6D4B\u8BCD\u3002\n\n - `--all` (\u5168\u6210\u8BED\u6A21\u5F0F)\n - \u5F00\u542F\u540E\uFF0C\u8BCD\u5E93\u6269\u5C55\u81F3 29766+ (\u542B\u751F\u50FB\u5B57\uFF0C\u6781\u96BE)\u3002\n - \u5173\u95ED\u65F6\uFF0C\u4F7F\u7528 7208 \u4E2A\u5E38\u7528\u6210\u8BED (\u4E49\u52A1\u6559\u80B2)\u3002\n\n> \u6CE8\uFF1A\u7ECF\u5178\u6A21\u5F0F\u548C\u6C49\u515C\u6A21\u5F0F\u53EF\u6295\u5165\u8D27\u5E01\uFF0C\u83B7\u80DC\u6709\u5956\u52B1\u3002\u53EF\u540C\u65F6\u542F\u7528\u591A\u79CD\u96BE\u5EA6\u6A21\u5F0F\u3002\n\n### `wordleGame.\u731C <\u731C\u6D4B\u5185\u5BB9>`\n\n- \u731C\u5355\u8BCD\u3001\u6210\u8BED\u7B49\u3002\n- \u9009\u9879:\n - `-r`: \u968F\u673A\u731C\u6D4B\u4E00\u6B21\u3002\n\n## QQ \u7FA4\n\n- 956758505\n";
export interface Config {
isDarkThemeEnabled: boolean;
isHighContrastThemeEnabled: boolean;
defaultMaxLeaderboardEntries: number;
defaultWordLengthForGuessing: number;
maxInvestmentCurrency: number;
defaultRewardMultiplier: number;
maxSimultaneousGuesses: number;
compositeImagePageWidth: number;
compositeImagePageHeight: number;
allowNonPlayersToGuess: boolean;
enableWordGuessMiddleware: boolean;
shouldPromptWordLengthInput: boolean;
isPreventUserDuplicateGuessInput: boolean;
shouldPromptForWordLengthOnNonClassicStart: boolean;
enableWordGuessTimeLimit: boolean;
wordGuessTimeLimitInSeconds: number;
retractDelay: number;
imageType: "png" | "jpeg" | "webp";
isTextToImageConversionEnabled: boolean;
isEnableQQOfficialRobotMarkdownTemplate: boolean;
customTemplateId: string;
key: string;
numberOfMessageButtonsPerRow: number;
isUsingUnifiedKoishiBuiltInUsername: boolean;
}
export declare const Config: Schema<Config>;
declare module "koishi" {
interface Tables {
wordle_game_records: GameRecord;
extra_wordle_game_records: ExtraGameRecord;
wordle_gaming_player_records: GamingPlayer;
wordle_player_records: PlayerRecord;
monetary: Monetary;
}
}
interface Monetary {
uid: number;
currency: string;
value: number;
}
export interface GameRecord {
id: number;
channelId: string;
isStarted: boolean;
gameMode: string;
wordGuessHtmlCache: string;
strokesHtmlCache: string[][];
remainingGuessesCount: number;
wordAnswerChineseDefinition: string;
guessWordLength: number;
wordGuess: string;
isRunning: boolean;
isHardMode: boolean;
isUltraHardMode: boolean;
correctLetters: string[];
presentLetters: string;
presentLettersWithIndex: string[];
absentLetters: string;
correctPinyinsWithIndex: string[];
presentPinyins: string[];
presentTones: string[];
presentPinyinsWithIndex: string[];
absentPinyins: string[];
correctTonesWithIndex: string[];
presentTonesWithIndex: string[];
absentTones: string[];
timestamp: string;
remainingWordsList: string[];
isAbsurd: boolean;
isChallengeMode: boolean;
targetWord: string;
wordlesNum: number;
wordleIndex: number;
isWin: boolean;
pinyin: string;
isFreeMode: boolean;
previousGuess: string[];
previousGuessIdioms: string[];
guessHistory: string[];
}
export interface ExtraGameRecord {
id: number;
channelId: string;
gameMode: string;
wordGuessHtmlCache: string;
strokesHtmlCache: string[][];
wordAnswerChineseDefinition: string;
guessWordLength: number;
wordGuess: string;
correctLetters: string[];
presentLetters: string;
presentLettersWithIndex: string[];
absentLetters: string;
correctPinyinsWithIndex: string[];
presentPinyinsWithIndex: string[];
absentPinyins: string[];
presentPinyins: string[];
presentTones: string[];
correctTonesWithIndex: string[];
presentTonesWithIndex: string[];
absentTones: string[];
timestamp: string;
wordlesNum: number;
wordleIndex: number;
isWin: boolean;
remainingGuessesCount: number;
pinyin: string;
previousGuess: string[];
previousGuessIdioms: string[];
}
export interface GamingPlayer {
id: number;
channelId: string;
userId: string;
username: string;
money: number;
}
export interface PlayerRecord {
id: number;
userId: string;
username: string;
win: number;
lose: number;
moneyChange: number;
wordGuessCount: number;
stats: PlayerStats;
fastestGuessTime: Record<string, number>;
extraCiyingRankInfo: ExtraCiyingRankInfo;
}
interface PlayerStats {
经典?: WinLoseStats;
Lewdle?: WinLoseStats;
CET4?: WinLoseStats;
CET6?: WinLoseStats;
GMAT?: WinLoseStats;
GRE?: WinLoseStats;
IELTS?: WinLoseStats;
SAT?: WinLoseStats;
TOEFL?: WinLoseStats;
考研?: WinLoseStats;
专八?: WinLoseStats;
专四?: WinLoseStats;
ALL?: WinLoseStats;
汉兜?: WinLoseStats;
Numberle?: WinLoseStats;
Math?: WinLoseStats;
词影?: WinLoseStats;
}
interface WinLoseStats {
win: number;
lose: number;
}
interface ExtraCiyingRankInfo {
successCountIn1HardMode: number;
successCountIn1Mode: number;
successCountIn2Mode: number;
successCountIn3Mode: number;
successCountIn4Mode: number;
winIn1HardMode: number;
winIn1Mode: number;
winIn2Mode: number;
winIn3Mode: number;
winIn4Mode: number;
loseIn1HardMode: number;
loseIn1Mode: number;
loseIn2Mode: number;
loseIn3Mode: number;
loseIn4Mode: number;
fastestGuessTimeIn1HardMode: number;
fastestGuessTimeIn1Mode: number;
fastestGuessTimeIn2Mode: number;
fastestGuessTimeIn3Mode: number;
fastestGuessTimeIn4Mode: number;
}
export declare function apply(ctx: Context, config: Config): Promise<void>;
export {};