Skip to content

Commit

Permalink
feat: requester,manger,alias modules
Browse files Browse the repository at this point in the history
  • Loading branch information
BIYUEHU committed Feb 16, 2024
1 parent 3743694 commit 1f145c6
Show file tree
Hide file tree
Showing 60 changed files with 923 additions and 4,872 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,4 @@ kotori.dev.yml
!modules/i18n-command
!modules/menu

index.html
data
26 changes: 13 additions & 13 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@

## Packages

- [] @kotori-bot/webui
- [] @kotori-bot/kotori-plugin-webui
- [] @kotori-bot/kotori-plugin-adapter-sandbox
- [] @kotori-bot/kotori-plugin-adapter-mail
- [] @kotori-bot/kotori-plugin-adapter-telegram
- [] kotori-plugin-adapter-minecraft
- [] kotori-plugin-requester
- [] kotori-plugin-grouper
- [] kotori-plugin-manger
- [] @kotori-bot/kotori-plugin-alias
- [] create-kotori
- [] @kotori-bot/webui
- [] @kotori-bot/kotori-plugin-webui
- [x] @kotori-bot/kotori-plugin-adapter-sandbox
- [x] @kotori-bot/kotori-plugin-adapter-mail
- [x] @kotori-bot/kotori-plugin-adapter-telegram
- [x] kotori-plugin-adapter-minecraft
- [] kotori-plugin-requester
- [] kotori-plugin-grouper
- [] kotori-plugin-manger
- [] @kotori-bot/kotori-plugin-alias
- [x] create-kotori

## Features

- [] ctx.filter()
- [] message.schedule()
- [x] ctx.filter()
- [x] message.schedule()
Binary file modified kotori.db
Binary file not shown.
8 changes: 4 additions & 4 deletions modules/access/locales/en_US.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
"access.descr.access.query": "Query group bot admins",
"access.descr.access.add": "Add group bot admin",
"access.descr.access.del": "Remove group bot admin",
"access.msg.access.query": "Current group admins:\n%content%\b ",
"access.msg.access.list": "%content%,",
"access.msg.access.add": "Added “%target%” as current group admin",
"access.msg.access.del": "Removed “%target%” from current group admins"
"access.msg.access.query": "Current group admins:{0}",
"access.msg.access.list": "\n{0}",
"access.msg.access.add": "Added “{0}” as current group admin",
"access.msg.access.del": "Removed “{0}” from current group admins"
}
8 changes: 4 additions & 4 deletions modules/access/locales/ja_JP.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
"access.descr.access.query": "グループBOT管理者を照会する",
"access.descr.access.add": "グループBOT管理者を追加する",
"access.descr.access.del": "グループBOT管理者を削除する",
"access.msg.access.query": "現在のグループ管理者一覧:\n%content%\b",
"access.msg.access.list": "%content%、",
"access.msg.access.add": "%target%”を現在のグループ管理者に追加しました",
"access.msg.access.del": "%target%”を現在のグループ管理者から削除しました"
"access.msg.access.query": "現在のグループ管理者一覧:{0}",
"access.msg.access.list": "\n{0}",
"access.msg.access.add": "{0}”を現在のグループ管理者に追加しました",
"access.msg.access.del": "{0}”を現在のグループ管理者から削除しました"
}
8 changes: 4 additions & 4 deletions modules/access/locales/zh_CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
"access.descr.access.query": "查询群BOT管理员",
"access.descr.access.add": "添加群BOT管理员",
"access.descr.access.del": "删除群BOT管理员",
"access.msg.access.query": "当前群管理员列表:\n%content%\b ",
"access.msg.access.list": "%content%,",
"access.msg.access.add": "已添加“%target%”至当前群管理员",
"access.msg.access.del": "已删除“%target%”从当前群管理员"
"access.msg.access.query": "当前群管理员列表:{0}",
"access.msg.access.list": "\n{0}",
"access.msg.access.add": "已添加“{0}”至当前群管理员",
"access.msg.access.del": "已删除“{0}”从当前群管理员"
}
8 changes: 4 additions & 4 deletions modules/access/locales/zh_TW.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
"access.descr.access.query": "查詢群BOT管理員",
"access.descr.access.add": "添加群BOT管理員",
"access.descr.access.del": "刪除群BOT管理員",
"access.msg.access.query": "當前群管理員列表:\n%content%\b ",
"access.msg.access.list": "%content%,",
"access.msg.access.add": "已添加“%target%”至當前群管理員",
"access.msg.access.del": "已刪除“%target%”從當前群管理員"
"access.msg.access.query": "當前群管理員列表:{0}",
"access.msg.access.list": "\n{0}",
"access.msg.access.add": "已添加“{0}”至當前群管理員",
"access.msg.access.del": "已刪除“{0}”從當前群管理員"
}
71 changes: 56 additions & 15 deletions modules/access/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,64 @@
import path from 'path';
import { Context } from 'kotori-bot';
import { CommandAccess, Context, MessageScope } from 'kotori-bot';

export const lang = [__dirname, '../locales'];

export const inject = ['database'];
export const inject = ['file'];

type Data = Record<string, string[]>;

export function main(ctx: Context) {
ctx.on('ready', async () => {
await ctx.db
.createTable('access', (table) => {
table.increments();
table.string('platform');
table.string('groupId');
table.string('userId');
})
.catch(() => {});
const load = (platform: string) => ctx.file.load(`${platform}.json`, 'json', {}) as Data;
const save = (platform: string, data: Data) => ctx.file.save(`${platform}.json`, data);

ctx.on('before_parse', (data) => {
const d = data;
if (d.session.type !== MessageScope.GROUP || !d.session.groupId) return;
const list = load(d.session.api.adapter.platform);
if (!(String(d.session.groupId) in list)) return;
if (!list[String(d.session.groupId)].includes(String(d.session.userId))) return;
d.session.sender.role = 'admin';
});

ctx.on('parse', (data) => {});
}
ctx
.command('access query - access.descr.access.query')
.action((_, session) => {
const list = (load(session.api.adapter.platform)[String(session.groupId)] ?? [])
.map((el) => session.format('access.msg.access.list', [el]))
.join('');
return ['access.msg.access.query', [list]];
})
.scope(MessageScope.GROUP)
.access(CommandAccess.ADMIN);

// const message = controlParams(`${data.group_id}\\accessList.json`
ctx
.command('access add <userId> - access.descr.access.add')
.action((data, session) => {
const list = load(session.api.adapter.platform);
const index = String(session.groupId);
list[index] = list[index] ?? [];
if (list[index].includes(data.args[0] as string)) {
return session.error('exists', { target: data.args[0] as string });
}
list[index].push(data.args[0] as string);
save(session.api.adapter.platform, list);
return ['access.msg.access.add', [data.args[0]]];
})
.scope(MessageScope.GROUP)
.access(CommandAccess.ADMIN);

ctx
.command('access del <userId> - access.descr.access.del')
.action((data, session) => {
const list = load(session.api.adapter.platform);
const index = String(session.groupId);
list[index] = list[index] ?? [];
if (!list[index].includes(data.args[0] as string)) {
return session.error('no_exists', { target: data.args[0] as string });
}
list[index] = list[index].filter((el) => el !== data.args[0]);
save(session.api.adapter.platform, list);
return ['access.msg.access.del', [data.args[0]]];
})
.scope(MessageScope.GROUP)
.access(CommandAccess.ADMIN);
}
4 changes: 2 additions & 2 deletions modules/adapter-onebot/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@kotori-bot/kotori-plugin-adapter-onebot",
"version": "1.2.0",
"version": "1.2.1",
"description": "Adapter For Onebot (go-cqhttp)",
"main": "lib/index.js",
"scripts": {
Expand All @@ -26,4 +26,4 @@
"@types/ws": "^8.5.8",
"ws": "^8.14.2"
}
}
}
10 changes: 6 additions & 4 deletions modules/adapter-onebot/src/adapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* @Blog: https://hotaru.icu
* @Date: 2023-09-29 14:31:09
* @LastEditors: Hotaru biyuehuya@gmail.com
* @LastEditTime: 2024-02-09 21:37:40
* @LastEditTime: 2024-02-16 15:33:09
*/
import { Adapter, AdapterConfig, Context, EventDataApiBase, EventDataTargetId, MessageScope, Tsu } from 'kotori-bot';
import WebSocket from 'ws';
Expand Down Expand Up @@ -44,6 +44,8 @@ export const config = Tsu.Intersection([

type OnebotConfig = Tsu.infer<typeof config> & AdapterConfig;

const handleMsg = (msg: string) => msg.replace(/\[CQ:at,qq=(.*?)\]/g, '$1');

export class OnebotAdapter extends Adapter {
private readonly address: string;

Expand All @@ -61,7 +63,7 @@ export class OnebotAdapter extends Adapter {
type: MessageScope.PRIVATE,
userId: data.user_id,
messageId: data.message_id,
message: data.message,
message: handleMsg(data.message),
sender: {
nickname: data.sender.nickname,
age: data.sender.age,
Expand All @@ -74,7 +76,7 @@ export class OnebotAdapter extends Adapter {
type: MessageScope.GROUP,
userId: data.user_id,
messageId: data.message_id,
message: data.message,
message: handleMsg(data.message),
sender: {
nickname: data.sender.nickname,
age: data.sender.age,
Expand Down Expand Up @@ -137,7 +139,7 @@ export class OnebotAdapter extends Adapter {
this.session('on_group_ban', {
userId: data.user_id,
groupId: data.group_id!,
operatorId: data.operator_id,
operatorId: data.operator_id!,
time: data.duration!
});
} else if (data.post_type === 'meta_event' && data.meta_event_type === 'heartbeat') {
Expand Down
10 changes: 5 additions & 5 deletions modules/adapter-onebot/src/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export class OnebotApi extends Api {
* @param {number} messageId 消息id
* @return {void}
*/
delete_msg(messageId: number) {
deleteMsg(messageId: number) {
this.adapter.send('delete_msg', { messageId });
}

Expand All @@ -41,7 +41,7 @@ export class OnebotApi extends Api {
* @param {string} groupName 新群名
* @return {void}
*/
set_group_name(groupId: number, groupName: string) {
setGroupName(groupId: number, groupName: string) {
this.adapter.send('set_group_name', { group_id: groupId, group_name: groupName });
}

Expand All @@ -51,7 +51,7 @@ export class OnebotApi extends Api {
* @param {string} image 图片路径
* @return {void}
*/
set_group_avatar(groupId: number, image: string) {
setGroupAvatar(groupId: number, image: string) {
this.adapter.send('set_group_portrait', { group_id: groupId, file: image, cache: false });
}

Expand All @@ -62,7 +62,7 @@ export class OnebotApi extends Api {
* @param {boolean} enable true为设置,false取消,默认true
* @return {void}
*/
set_group_admin(groupId: number, userId: number, enable: boolean = true) {
setGroupAdmin(groupId: number, userId: number, enable: boolean = true) {
this.adapter.send('set_group_admin', { group_id: groupId, user_id: userId, enable });
}

Expand All @@ -73,7 +73,7 @@ export class OnebotApi extends Api {
* @param {string} card 群名片内容,不填或空字符串表示删除群名片
* @return {void}
*/
set_group_card(groupId: number, userId: number, card: string) {
setGroupCard(groupId: number, userId: number, card: string) {
this.adapter.send('set_group_card', { group_id: groupId, user_id: userId, card });
}

Expand Down
11 changes: 11 additions & 0 deletions modules/alias/locales/en_US.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"core.descr.alias.query": "Query all command aliases",
"core.descr.alias.add": "Add command alias, supports parameters, no need for slash",
"core.descr.alias.del": "Delete command alias",
"core.msg.alias.query": "Alias list: {0}",
"core.msg.alias.list": "\n{0} -> {1}",
"core.msg.alias.add": "Succeeded in adding alias: {0}\nSend the alias to see the effect",
"core.msg.alias.del": "Succeeded in deleting alias: {0}",
"core.msg.alias.fail": "This command or alias is already registered",
"core.msg.alias.fail.2": "Invalid command"
}
11 changes: 11 additions & 0 deletions modules/alias/locales/ja_JP.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"core.descr.alias.query": "すべてのコマンドエイリアスを照会",
"core.descr.alias.add": "コマンドエイリアスを追加、スラッシュ不要、パラメータ可能",
"core.descr.alias.del": "コマンドエイリアスを削除",
"core.msg.alias.query": "エイリアスリスト:{0}",
"core.msg.alias.list": "\n{0} -> {1}",
"core.msg.alias.add": "エイリアスが追加されました: {0}\nエイリアスを送信して効果を確認してください",
"core.msg.alias.del": "エイリアスが削除されました: {0}",
"core.msg.alias.fail": "そのコマンドまたはエイリアスは既に登録されています",
"core.msg.alias.fail.2": "そのコマンドは無効です"
}
11 changes: 11 additions & 0 deletions modules/alias/locales/zh_CN.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"core.descr.alias.query": "查询全部指令别名",
"core.descr.alias.add": "添加指令别名",
"core.descr.alias.del": "删除指令别名",
"core.msg.alias.query": "别名列表:{0}",
"core.msg.alias.list": "\n{0} -> {1}",
"core.msg.alias.add": "成功添加别名:{0}\n发送别名以查看效果",
"core.msg.alias.del": "成功删除别名:{0}",
"core.msg.alias.fail": "该别名已被注册",
"core.msg.alias.fail.2": "该指令无效"
}
11 changes: 11 additions & 0 deletions modules/alias/locales/zh_TW.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"core.descr.alias.query": "查詢全部指令別名",
"core.descr.alias.add": "添加指令別名",
"core.descr.alias.del": "刪除指令別名",
"core.msg.alias.query": "別名列表:{0}",
"core.msg.alias.list": "\n{0} -> {1}",
"core.msg.alias.add": "成功添加別名:{0}\n發送別名以查看效果",
"core.msg.alias.del": "成功刪除別名:{0}",
"core.msg.alias.fail": "該別名已被注冊",
"core.msg.alias.fail.2": "該指令無效"
}
36 changes: 36 additions & 0 deletions modules/alias/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"name": "@kotori-bot/kotori-plugin-alias",
"version": "1.0.0",
"description": "alias plugin",
"main": "lib/index.js",
"scripts": {
"build": "tsc --build"
},
"keywords": [
"kotori",
"chatbot",
"kotori-plugin"
],
"license": "GPL-3.0",
"files": [
"lib",
"locales",
"LICENSE",
"README.md"
],
"author": "Himeno <biyuehuya@gmail.com>",
"peerDependencies": {
"kotori-bot": "workspace:^"
},
"kotori": {
"enforce": "pre",
"meta": {
"language": [
"en_US",
"ja_JP",
"zh_TW",
"zh_CN"
]
}
}
}

0 comments on commit 1f145c6

Please sign in to comment.