Add silent commands
This commit is contained in:
parent
303d8034f9
commit
149a21d6e3
|
@ -37,7 +37,7 @@ This bot is designed to simplify the moderation and management of Telegram group
|
||||||
- [ ] Docker
|
- [ ] Docker
|
||||||
- [ ] Systemd unit
|
- [ ] Systemd unit
|
||||||
- [ ] Antiflood system
|
- [ ] Antiflood system
|
||||||
- [ ] Silent commands
|
- [x] Silent commands
|
||||||
- [ ] Site for group moderator
|
- [ ] Site for group moderator
|
||||||
|
|
||||||
## Support
|
## Support
|
||||||
|
|
|
@ -16,7 +16,7 @@ from utils import getCommandArgs, getArgument, checkArg, parse_duration, delete_
|
||||||
# replied=True - If message is answer, continue.
|
# replied=True - If message is answer, continue.
|
||||||
# accessed_roles - list roles.
|
# accessed_roles - list roles.
|
||||||
|
|
||||||
@dp.message_handler(commands=["ban"],commands_prefix="!",available_roles=[MemberRoles.HELPER,MemberRoles.ADMIN])
|
@dp.message_handler(commands=["ban","sban"],commands_prefix="!",available_roles=[MemberRoles.HELPER,MemberRoles.ADMIN])
|
||||||
async def ban_user(message: types.Message):
|
async def ban_user(message: types.Message):
|
||||||
command = await getCommandArgs(message)
|
command = await getCommandArgs(message)
|
||||||
reason = getArgument(command.arguments)
|
reason = getArgument(command.arguments)
|
||||||
|
@ -35,7 +35,7 @@ async def ban_user(message: types.Message):
|
||||||
# Ban user and save (bool)
|
# Ban user and save (bool)
|
||||||
status = await bot.kick_chat_member(chat_id=message.chat.id, user_id=to_user.user_id, until_date=None)
|
status = await bot.kick_chat_member(chat_id=message.chat.id, user_id=to_user.user_id, until_date=None)
|
||||||
|
|
||||||
if status:
|
if status and (not command.is_silent):
|
||||||
await message.answer(f"[{from_user.first_name}](tg://user?id={from_user.user_id}) has banned [{to_user.first_name}](tg://user?id={to_user.user_id})",parse_mode="Markdown")
|
await message.answer(f"[{from_user.first_name}](tg://user?id={from_user.user_id}) has banned [{to_user.first_name}](tg://user?id={to_user.user_id})",parse_mode="Markdown")
|
||||||
|
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ async def ban_user(message: types.Message):
|
||||||
reason=reason,
|
reason=reason,
|
||||||
)
|
)
|
||||||
|
|
||||||
@dp.message_handler(commands=["unban"],commands_prefix="!",available_roles=[MemberRoles.HELPER,MemberRoles.ADMIN])
|
@dp.message_handler(commands=["unban","sunban"],commands_prefix="!",available_roles=[MemberRoles.HELPER,MemberRoles.ADMIN])
|
||||||
async def unban_user(message: types.Message):
|
async def unban_user(message: types.Message):
|
||||||
command = await getCommandArgs(message)
|
command = await getCommandArgs(message)
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ async def unban_user(message: types.Message):
|
||||||
status = await bot.unban_chat_member(chat_id=message.chat.id, user_id=to_user.user_id)
|
status = await bot.unban_chat_member(chat_id=message.chat.id, user_id=to_user.user_id)
|
||||||
|
|
||||||
|
|
||||||
if status:
|
if status and (not command.is_silent):
|
||||||
await message.answer(f"[{from_user.first_name}](tg://user?id={from_user.user_id}) has unbanned [{to_user.first_name}](tg://user?id={to_user.user_id})",parse_mode="Markdown")
|
await message.answer(f"[{from_user.first_name}](tg://user?id={from_user.user_id}) has unbanned [{to_user.first_name}](tg://user?id={to_user.user_id})",parse_mode="Markdown")
|
||||||
|
|
||||||
Member.create(
|
Member.create(
|
||||||
|
@ -94,7 +94,7 @@ async def info_user(message: types.Message):
|
||||||
parse_mode="Markdown"
|
parse_mode="Markdown"
|
||||||
)
|
)
|
||||||
|
|
||||||
@dp.message_handler(commands=["kick"],commands_prefix="!",available_roles=[MemberRoles.HELPER,MemberRoles.ADMIN])
|
@dp.message_handler(commands=["kick","skick"],commands_prefix="!",available_roles=[MemberRoles.HELPER,MemberRoles.ADMIN])
|
||||||
async def kick_user(message:types.Message):
|
async def kick_user(message:types.Message):
|
||||||
command = await getCommandArgs(message)
|
command = await getCommandArgs(message)
|
||||||
arguments = command.arguments
|
arguments = command.arguments
|
||||||
|
@ -115,7 +115,7 @@ async def kick_user(message:types.Message):
|
||||||
status1 = await bot.kick_chat_member(chat_id=message.chat.id, user_id=to_user.user_id, until_date=None)
|
status1 = await bot.kick_chat_member(chat_id=message.chat.id, user_id=to_user.user_id, until_date=None)
|
||||||
status2 = await bot.unban_chat_member(chat_id=message.chat.id, user_id=to_user.user_id)
|
status2 = await bot.unban_chat_member(chat_id=message.chat.id, user_id=to_user.user_id)
|
||||||
|
|
||||||
if (not status1 and status2):
|
if (not status1 and status2) and (not command.is_silent):
|
||||||
await message.answer(f"[{from_user.first_name}](tg://user?id={from_user.user_id}) has kicked [{to_user.first_name}](tg://user?id={to_user.user_id})",parse_mode="Markdown")
|
await message.answer(f"[{from_user.first_name}](tg://user?id={from_user.user_id}) has kicked [{to_user.first_name}](tg://user?id={to_user.user_id})",parse_mode="Markdown")
|
||||||
|
|
||||||
|
|
||||||
|
@ -127,7 +127,7 @@ async def kick_user(message:types.Message):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@dp.message_handler(commands=["mute"],commands_prefix="!",available_roles=[MemberRoles.ADMIN])
|
@dp.message_handler(commands=["mute","smute"],commands_prefix="!",available_roles=[MemberRoles.ADMIN])
|
||||||
async def mute_user(message:types.Message):
|
async def mute_user(message:types.Message):
|
||||||
command = await getCommandArgs(message)
|
command = await getCommandArgs(message)
|
||||||
arguments = command.arguments
|
arguments = command.arguments
|
||||||
|
@ -170,7 +170,7 @@ async def mute_user(message:types.Message):
|
||||||
permissions=permissions
|
permissions=permissions
|
||||||
)
|
)
|
||||||
|
|
||||||
if status:
|
if status and (not command.is_silent):
|
||||||
await message.answer(f"[{from_user.first_name}](tg://user?id={from_user.user_id}) has muted [{to_user.first_name}](tg://user?id={to_user.user_id}) for {duration_string}",parse_mode="Markdown")
|
await message.answer(f"[{from_user.first_name}](tg://user?id={from_user.user_id}) has muted [{to_user.first_name}](tg://user?id={to_user.user_id}) for {duration_string}",parse_mode="Markdown")
|
||||||
|
|
||||||
|
|
||||||
|
@ -182,7 +182,7 @@ async def mute_user(message:types.Message):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@dp.message_handler(commands=["unmute"],commands_prefix="!",available_roles=[MemberRoles.ADMIN])
|
@dp.message_handler(commands=["unmute","sunmute"],commands_prefix="!",available_roles=[MemberRoles.ADMIN])
|
||||||
async def umute_user(message: types.Message):
|
async def umute_user(message: types.Message):
|
||||||
# Get information
|
# Get information
|
||||||
command = await getCommandArgs(message)
|
command = await getCommandArgs(message)
|
||||||
|
@ -220,7 +220,7 @@ async def umute_user(message: types.Message):
|
||||||
permissions=permissions
|
permissions=permissions
|
||||||
)
|
)
|
||||||
|
|
||||||
if status:
|
if status and (not command.is_silent):
|
||||||
await message.answer(f"[{from_user.first_name}](tg://user?id={from_user.user_id}) has unmuted [{to_user.first_name}](tg://user?id={to_user.user_id})",parse_mode="Markdown")
|
await message.answer(f"[{from_user.first_name}](tg://user?id={from_user.user_id}) has unmuted [{to_user.first_name}](tg://user?id={to_user.user_id})",parse_mode="Markdown")
|
||||||
|
|
||||||
@dp.message_handler(commands=["pin"],commands_prefix="!",available_roles=[MemberRoles.HELPER,MemberRoles.ADMIN])
|
@dp.message_handler(commands=["pin"],commands_prefix="!",available_roles=[MemberRoles.HELPER,MemberRoles.ADMIN])
|
||||||
|
@ -250,11 +250,9 @@ async def readonly_mode(message:types.Message):
|
||||||
can_pin_messages=group_permissions['can_pin_messages']
|
can_pin_messages=group_permissions['can_pin_messages']
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
config.group_permissions["can_send_messages"] = not status
|
config.group_permissions["can_send_messages"] = not status
|
||||||
await bot.set_chat_permissions(chat_id=message.chat.id, permissions=chat_permissions)
|
await bot.set_chat_permissions(chat_id=message.chat.id, permissions=chat_permissions)
|
||||||
|
|
||||||
|
|
||||||
@dp.message_handler(commands=["warn","w"],commands_prefix="!",available_roles=[MemberRoles.HELPER,MemberRoles.ADMIN])
|
@dp.message_handler(commands=["warn","w"],commands_prefix="!",available_roles=[MemberRoles.HELPER,MemberRoles.ADMIN])
|
||||||
async def warn_user(message: types.Message):
|
async def warn_user(message: types.Message):
|
||||||
# Get information
|
# Get information
|
||||||
|
|
|
@ -19,18 +19,24 @@ class CommandArguments:
|
||||||
to_user:Member | None
|
to_user:Member | None
|
||||||
from_user:Member | None
|
from_user:Member | None
|
||||||
arguments:list
|
arguments:list
|
||||||
|
is_silent:bool
|
||||||
async def getCommandArgs(message: types.Message) -> CommandArguments:
|
async def getCommandArgs(message: types.Message) -> CommandArguments:
|
||||||
"""
|
"""
|
||||||
Describe user data and arguments from message
|
Describe user data and arguments from message
|
||||||
!command (username|id) ...
|
!command (username|id) ...
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
silent = False
|
||||||
|
|
||||||
|
if (message.text.split()[0] == "s"):
|
||||||
|
silent = True
|
||||||
|
|
||||||
arguments = message.text.split()[1:]
|
arguments = message.text.split()[1:]
|
||||||
to_user = None
|
to_user = None
|
||||||
from_user = Member.search(Member.user_id, message.from_user.id)
|
from_user = Member.search(Member.user_id, message.from_user.id)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# If message replied
|
# If message replied
|
||||||
if (message.reply_to_message):
|
if (message.reply_to_message):
|
||||||
to_user = Member.search(Member.user_id, message.reply_to_message)
|
to_user = Member.search(Member.user_id, message.reply_to_message)
|
||||||
|
@ -49,8 +55,7 @@ async def getCommandArgs(message: types.Message) -> CommandArguments:
|
||||||
|
|
||||||
arguments = arguments[1:]
|
arguments = arguments[1:]
|
||||||
|
|
||||||
return CommandArguments(to_user, from_user, arguments)
|
return CommandArguments(to_user, from_user, arguments,silent)
|
||||||
|
|
||||||
|
|
||||||
def delete_substring_from_string(string:str,substring:str) -> str:
|
def delete_substring_from_string(string:str,substring:str) -> str:
|
||||||
string_list = string.split(substring)
|
string_list = string.split(substring)
|
||||||
|
|
Reference in New Issue