mirror of https://github.com/Nofated095/Q2TG.git
feat: 自动创建保存所有 tg chat 的文件夹
This commit is contained in:
parent
d2753328ce
commit
f75fa06f25
|
@ -111,6 +111,10 @@ export class Telegram {
|
|||
public registerCallback(cb: () => any) {
|
||||
return this.callbackQueryHelper.registerCallback(cb);
|
||||
}
|
||||
|
||||
public invoke<R extends Api.AnyRequest>(req: R) {
|
||||
return this.client.invoke(req);
|
||||
}
|
||||
}
|
||||
|
||||
export class TelegramChat {
|
||||
|
@ -120,7 +124,10 @@ export class TelegramChat {
|
|||
private readonly waitForInputHelper: WaitForMessageHelper) {
|
||||
}
|
||||
|
||||
public async sendMessage(params: SendMessageParams) {
|
||||
public async sendMessage(params: SendMessageParams | string) {
|
||||
if (typeof params === 'string') {
|
||||
params = { message: params };
|
||||
}
|
||||
return await this.client.sendMessage(this.entity, params);
|
||||
}
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ export default class ConfigController {
|
|||
this.configService = new ConfigService(tgBot, tgUser, oicq);
|
||||
tgBot.addNewMessageEventHandler(this.handleMessage);
|
||||
this.configService.configCommands();
|
||||
config.workMode === 'personal' && this.configService.setupFilter();
|
||||
}
|
||||
|
||||
private handleMessage = async (message: Api.Message) => {
|
||||
|
|
|
@ -10,9 +10,12 @@ import db from '../providers/db';
|
|||
import { Api, utils } from 'telegram';
|
||||
import commands from '../constants/commands';
|
||||
|
||||
const DEFAULT_FILTER_ID = 114; // 514
|
||||
|
||||
export default class ConfigService {
|
||||
private owner: TelegramChat;
|
||||
private log = getLogger('ConfigService');
|
||||
private filter;
|
||||
|
||||
constructor(private readonly tgBot: Telegram,
|
||||
private readonly tgUser: Telegram,
|
||||
|
@ -122,4 +125,46 @@ export default class ConfigService {
|
|||
}
|
||||
await this.owner.sendMessage({ message });
|
||||
}
|
||||
|
||||
// 创建 QQ 群组的文件夹
|
||||
public async setupFilter() {
|
||||
const result = await this.tgUser.invoke(new Api.messages.GetDialogFilters());
|
||||
this.filter = result.find(e => e.id === DEFAULT_FILTER_ID);
|
||||
this.log.debug(this.filter);
|
||||
if (!this.filter) {
|
||||
this.log.info('创建 TG 文件夹');
|
||||
// 要自己计算新的 id,随意 id 也是可以的
|
||||
// https://github.com/morethanwords/tweb/blob/7d646bc9a87d943426d831f30b69d61b743f51e0/src/lib/storages/filters.ts#L251
|
||||
// 创建
|
||||
this.filter = new Api.DialogFilter({
|
||||
id: DEFAULT_FILTER_ID,
|
||||
title: 'QQ',
|
||||
pinnedPeers: [
|
||||
utils.getInputPeer((await this.tgUser.getChat(this.tgBot.me.username)).entity),
|
||||
],
|
||||
includePeers: [],
|
||||
excludePeers: [],
|
||||
emoticon: '🐧',
|
||||
});
|
||||
let errorText = '设置文件夹失败';
|
||||
try {
|
||||
const isSuccess = await this.tgUser.invoke(
|
||||
new Api.messages.UpdateDialogFilter({
|
||||
id: DEFAULT_FILTER_ID,
|
||||
filter: this.filter,
|
||||
}),
|
||||
);
|
||||
if (!isSuccess) {
|
||||
this.filter = null;
|
||||
this.log.error(errorText);
|
||||
await this.owner.sendMessage(errorText);
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
this.filter = null;
|
||||
this.log.error(errorText, e);
|
||||
await this.owner.sendMessage(errorText + `\n<code>${e}</code>`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue