rename mute/unmute to ignore/unignore and add CHAT_ADMIN requirement for them and ban/unban commands

This commit is contained in:
2026-01-22 14:36:14 +03:00
parent e475de59b2
commit 1493ffbe01
8 changed files with 55 additions and 25 deletions
+2 -1
View File
@@ -1,7 +1,8 @@
export enum Requirement {
BOT_CREATOR,
BOT_ADMIN,
BOT_CHAT_ADMIN,
CHAT,
CHAT_ADMIN,
BOT_CHAT_ADMIN,
REPLY
}
+8 -4
View File
@@ -19,14 +19,18 @@ export class Requirements {
return this.requirements.includes(Requirement.BOT_ADMIN);
}
isRequiresBotChatAdmin(): boolean {
return this.requirements.includes(Requirement.BOT_CHAT_ADMIN);
}
isRequiresChat(): boolean {
return this.requirements.includes(Requirement.CHAT);
}
isRequiresChatAdmin(): boolean {
return this.requirements.includes(Requirement.CHAT_ADMIN);
}
isRequiresBotChatAdmin(): boolean {
return this.requirements.includes(Requirement.BOT_CHAT_ADMIN);
}
isRequiresReply(): boolean {
return this.requirements.includes(Requirement.REPLY);
}
+2 -1
View File
@@ -11,10 +11,11 @@ export class Ban extends ChatCommand {
description = "ban user from chat";
requirements = Requirements.Build(
Requirement.BOT_ADMIN,
Requirement.CHAT,
Requirement.CHAT_ADMIN,
Requirement.BOT_CHAT_ADMIN,
Requirement.REPLY,
Requirement.BOT_ADMIN
);
async execute(msg: Message) {
@@ -7,11 +7,17 @@ import {fullName, logError, oldSendMessage} from "../util/utils";
import {botUser} from "../index";
import {Environment} from "../common/environment";
export class Mute extends ChatCommand {
title = "/mute";
export class Ignore extends ChatCommand {
title = "/ignore";
description = "Bot will ignore user";
requirements = Requirements.Build(Requirement.BOT_ADMIN, Requirement.REPLY);
requirements = Requirements.Build(
Requirement.BOT_ADMIN,
Requirement.CHAT,
Requirement.CHAT_ADMIN,
Requirement.BOT_CHAT_ADMIN,
Requirement.REPLY,
);
async execute(msg: Message) {
if (!msg.reply_to_message) return;
+3 -2
View File
@@ -3,7 +3,7 @@ import {Requirements} from "../base/requirements";
import {Requirement} from "../base/requirement";
import {Message} from "typescript-telegram-bot-api";
import {bot, botUser} from "../index";
import {fullName, logError, oldSendMessage, oldReplyToMessage} from "../util/utils";
import {fullName, logError, oldReplyToMessage, oldSendMessage} from "../util/utils";
import {Environment} from "../common/environment";
export class Unban extends ChatCommand {
@@ -11,10 +11,11 @@ export class Unban extends ChatCommand {
description = "unban user from chat";
requirements = Requirements.Build(
Requirement.BOT_ADMIN,
Requirement.CHAT,
Requirement.CHAT_ADMIN,
Requirement.BOT_CHAT_ADMIN,
Requirement.REPLY,
Requirement.BOT_ADMIN
);
async execute(msg: Message) {
@@ -7,10 +7,16 @@ import {Message} from "typescript-telegram-bot-api";
import {botUser} from "../index";
import {Environment} from "../common/environment";
export class Unmute extends ChatCommand {
title = "/unmute";
export class Unignore extends ChatCommand {
title = "/unignore";
description = "Bot will start responding to the user";
requirements = Requirements.Build(Requirement.BOT_ADMIN, Requirement.CHAT, Requirement.REPLY);
requirements = Requirements.Build(
Requirement.BOT_ADMIN,
Requirement.CHAT,
Requirement.CHAT_ADMIN,
Requirement.BOT_CHAT_ADMIN,
Requirement.REPLY,
);
async execute(msg: Message) {
if (!msg.reply_to_message) return;
+4 -4
View File
@@ -15,8 +15,8 @@ import {
} from "./util/utils";
import {Ae} from "./commands/ae";
import {Help} from "./commands/help";
import {Mute} from "./commands/mute";
import {Unmute} from "./commands/unmute";
import {Ignore} from "./commands/ignore";
import {Unignore} from "./commands/unignore";
import {Ping} from "./commands/ping";
import {RandomString} from "./commands/random-string";
import {SystemSpecs} from "./commands/system-specs";
@@ -127,8 +127,8 @@ export const chatCommands: ChatCommand[] = [
new Help(),
new Test(),
new Ae(),
new Mute(),
new Unmute(),
new Ignore(),
new Unignore(),
new Ping(),
new RandomInt(),
new RandomString(),
+18 -7
View File
@@ -101,23 +101,34 @@ export async function checkRequirements(cmd: ChatCommand | null, msg: Message):
return false;
}
if (reqs.isRequiresChat() && msg.chat.type === "private") {
console.log(`${cmd.title}: chatId is bad`);
await oldReplyToMessage(msg, "Тут Вам не чат.");
return false;
}
if (reqs.isRequiresChatAdmin()) {
const member = await bot.getChatMember({chat_id: msg.chat.id, user_id: msg.from.id});
const isAdmin = member.status === "administrator" || member.status === "creator";
if (!isAdmin) {
console.log(`${cmd.title}: chatAdminId is bad`);
await oldReplyToMessage(msg, "Вы не являетесь администратором чата.");
return false;
}
}
if (reqs.isRequiresBotChatAdmin() && msg.chat.type !== "private") {
const member = await bot.getChatMember({chat_id: msg.chat.id, user_id: botUser.id});
const isAdmin = member.status === "administrator" || member.status === "creator";
if (!isAdmin) {
console.log(`${cmd.title}: chatAdminId is bad`);
console.log(`${cmd.title}: botChatAdminId is bad`);
await oldReplyToMessage(msg, "Бот не является администратором чата.");
return false;
}
}
if (reqs.isRequiresChat() && msg.chat.type === "private") {
console.log(`${cmd.title}: chatId is bad`);
await oldReplyToMessage(msg, "Тут Вам не чат.");
return false;
}
if (reqs.isRequiresReply() && !msg.reply_to_message) {
console.log(`${cmd.title}: replyMessage is bad`);
await oldReplyToMessage(msg, "Отсутствует ответ на сообщение.");