Skip to content

Commit aa02408

Browse files
committed
feat(service): Added new imports, refactored code in MessageCheck class, and added initialGroup method
1 parent b988ee1 commit aa02408

File tree

1 file changed

+84
-5
lines changed

1 file changed

+84
-5
lines changed

src/service/MessageCheck.ts

Lines changed: 84 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@ import { MuteService } from "./command/mute";
77
import { BanService } from "./command/ban";
88
import { SafeExecution } from "../decorators/SafeExecution";
99
import { ApprovedUser } from "../entities/ApprovedUser";
10+
import { GroupSettingsService } from "./db/group";
11+
import { Logger } from "../config/logger";
12+
import { BlacklistService } from "./command/blacklist";
13+
import { UserService } from "./db/user";
14+
import { GroupMembershipService } from "./db/group/Membership";
15+
import { MESSAGE } from "../helper/message";
16+
const logger = new Logger({ file: "join_group.log", level: "info" });
1017

1118
export class MessageCheck {
1219
@SafeExecution()
@@ -31,10 +38,14 @@ export class MessageCheck {
3138
return;
3239
}
3340
const blacklist = groupSettings.black_list;
34-
const approvedUserRepo: Repository<ApprovedUser> = AppDataSource.getRepository(ApprovedUser);
35-
const [isApprovedUser,isAdmin] =await Promise.all([approvedUserRepo.findOne({
36-
where: { user_id: userId, group: { group_id: groupId } },
37-
}), this.isAdmin(ctx, userId)])
41+
const approvedUserRepo: Repository<ApprovedUser> =
42+
AppDataSource.getRepository(ApprovedUser);
43+
const [isApprovedUser, isAdmin] = await Promise.all([
44+
approvedUserRepo.findOne({
45+
where: { user_id: userId, group: { group_id: groupId } },
46+
}),
47+
this.isAdmin(ctx, userId),
48+
]);
3849
if (isApprovedUser || isAdmin) {
3950
return;
4051
}
@@ -79,7 +90,10 @@ export class MessageCheck {
7990
username: string,
8091
messageId: number
8192
) {
82-
const [muteService,banService ] = [new MuteService(ctx, userId), new BanService(ctx, userId)]
93+
const [muteService, banService] = [
94+
new MuteService(ctx, userId),
95+
new BanService(ctx, userId),
96+
];
8397

8498
const [command, duration] = action.split(" ");
8599
switch (command.toLowerCase()) {
@@ -127,4 +141,69 @@ export class MessageCheck {
127141

128142
return now;
129143
}
144+
static async initialGroup(ctx: Context) {
145+
const chat = ctx.chat!;
146+
const from = ctx.from;
147+
try {
148+
const groupRepo = new GroupSettingsService();
149+
let groupSettings = await groupRepo.getByGroupId(chat.id);
150+
if (groupSettings) {
151+
return;
152+
}
153+
154+
if (!groupSettings) {
155+
groupSettings = await groupRepo.init(ctx);
156+
logger.info(
157+
`Bot added to group ${chat.title} by ${from?.username}`,
158+
"GROUP"
159+
);
160+
// Initialize blacklist terms from BlackListJson
161+
await BlacklistService.storeBlacklistTerms(groupSettings);
162+
} else {
163+
logger.info(
164+
`Bot re-added to existing group ${chat.title} by ${from?.username}`,
165+
"GROUP"
166+
);
167+
}
168+
169+
// Add the user who added the bot to the group as an admin
170+
const userRepo = new UserService();
171+
let user = await userRepo.getByTelegramId(from?.id!);
172+
173+
if (!user) {
174+
user = await userRepo.create({
175+
telegram_id: from?.id!,
176+
role: "admin",
177+
});
178+
179+
await userRepo.save(user);
180+
} else {
181+
// Update user role if needed
182+
if (user.role !== "admin") {
183+
user.role = "admin";
184+
await userRepo.save(user);
185+
}
186+
}
187+
188+
// Create a GroupMembership record
189+
const membershipRepo = new GroupMembershipService();
190+
let membership = await membershipRepo.getGroupAndUserId(
191+
groupSettings.id,
192+
user.id
193+
);
194+
195+
if (!membership) {
196+
membership = await membershipRepo.create({
197+
group: groupSettings,
198+
user: user,
199+
is_admin: true,
200+
});
201+
202+
await membershipRepo.save(membership);
203+
}
204+
await ctx.reply(MESSAGE.newGroupJoin(ctx, from?.username!));
205+
} catch (error: any) {
206+
logger.error("Failed to save group settings", error, "GROUP");
207+
}
208+
}
130209
}

0 commit comments

Comments
 (0)