mirror of
https://github.com/SantaSpeen/RoyaltyIT-tg-bot.git
synced 2025-07-03 00:06:07 +00:00
Mutes ready
This commit is contained in:
parent
6335170a8f
commit
c451190632
26
src/main.py
26
src/main.py
@ -1,3 +1,4 @@
|
|||||||
|
import asyncio
|
||||||
import logging
|
import logging
|
||||||
import time
|
import time
|
||||||
|
|
||||||
@ -101,10 +102,27 @@ async def mute(msg: types.Message):
|
|||||||
if reply_message:
|
if reply_message:
|
||||||
warn_user = reply_message.from_user
|
warn_user = reply_message.from_user
|
||||||
user_id = warn_user.id
|
user_id = warn_user.id
|
||||||
|
splt = msg.text.split(" ")[1:]
|
||||||
|
if len(splt) > 0:
|
||||||
|
c = time.time()
|
||||||
|
try:
|
||||||
|
for word in splt:
|
||||||
|
word: str
|
||||||
|
if word.endswith("d"):
|
||||||
|
c += int(word[:len(word)-1]) * 24 * 60 * 60
|
||||||
|
elif word.endswith("h"):
|
||||||
|
c += int(word[:len(word)-1]) * 60 * 60
|
||||||
|
elif word.endswith("m"):
|
||||||
|
c += int(word[:len(word)-1]) * 60
|
||||||
|
elif word.endswith("s"):
|
||||||
|
c += int(word[:len(word)-1])
|
||||||
|
tools.set_mute(user_id, c)
|
||||||
await tools.set_user_permissions(user_id, msg.chat.id, mute_perm)
|
await tools.set_user_permissions(user_id, msg.chat.id, mute_perm)
|
||||||
|
except Exception as e:
|
||||||
|
await msg.reply(f"Exception: <code>{e}</code>", parse_mode=ParseMode.HTML)
|
||||||
|
else:
|
||||||
|
await msg.reply("Укажи время: <code>/mute 1d 5h 10m 30s</code>", parse_mode=ParseMode.HTML)
|
||||||
else:
|
else:
|
||||||
|
|
||||||
await msg.reply("Сначала надо выбрать пользователя.")
|
await msg.reply("Сначала надо выбрать пользователя.")
|
||||||
|
|
||||||
|
|
||||||
@ -164,13 +182,13 @@ async def new_chat_member(msg: types.Message):
|
|||||||
@dp.message_handler(content_types=['text', 'photo', 'document', 'audio', 'sticker', 'animation', 'voice', 'video_note'])
|
@dp.message_handler(content_types=['text', 'photo', 'document', 'audio', 'sticker', 'animation', 'voice', 'video_note'])
|
||||||
async def all_messages(msg: types.Message):
|
async def all_messages(msg: types.Message):
|
||||||
global mute_all
|
global mute_all
|
||||||
text = msg.text.lower()
|
text = msg.text
|
||||||
user_id = msg.from_user.id
|
user_id = msg.from_user.id
|
||||||
log.info(f"New message from {user_id}(@{msg.from_user.username}) in {msg.chat.id}: '{text}'; "
|
log.info(f"New message from {user_id}(@{msg.from_user.username}) in {msg.chat.id}: '{text}'; "
|
||||||
f"Type: {msg.content_type}")
|
f"Type: {msg.content_type}")
|
||||||
|
|
||||||
if msg.chat.type in [ChatType.SUPERGROUP, ChatType.GROUP]: # Если сообщение пришло из группы
|
if msg.chat.type in [ChatType.SUPERGROUP, ChatType.GROUP]: # Если сообщение пришло из группы
|
||||||
|
asyncio.create_task(tools.fix_muted(unmute_perm))
|
||||||
admins = await tools.admins
|
admins = await tools.admins
|
||||||
if user_id in admins['ids']:
|
if user_id in admins['ids']:
|
||||||
if text == "суд идёт":
|
if text == "суд идёт":
|
||||||
|
24
src/tools.py
24
src/tools.py
@ -3,7 +3,7 @@ import time
|
|||||||
|
|
||||||
import aiogram
|
import aiogram
|
||||||
from aiogram.types import ParseMode
|
from aiogram.types import ParseMode
|
||||||
from peewee import DoesNotExist
|
from peewee import DoesNotExist, ModelObjectCursorWrapper
|
||||||
|
|
||||||
from SqlModels import Users, Mailing
|
from SqlModels import Users, Mailing
|
||||||
from config import Config
|
from config import Config
|
||||||
@ -44,6 +44,16 @@ class Tools:
|
|||||||
user = Users(user_id=user_id)
|
user = Users(user_id=user_id)
|
||||||
return user
|
return user
|
||||||
|
|
||||||
|
async def fix_muted(self, unmute_perm):
|
||||||
|
users = Users().select().where(Users.muted_until <= time.time())
|
||||||
|
for user in users:
|
||||||
|
user.muted_until = None
|
||||||
|
user.save()
|
||||||
|
await self.set_user_permissions(user.user_id,
|
||||||
|
self.config.remote_chat,
|
||||||
|
unmute_perm)
|
||||||
|
# ModelObjectCursasdaorWrapper
|
||||||
|
|
||||||
async def set_user_permissions(self, user_id, chat_id, permissions):
|
async def set_user_permissions(self, user_id, chat_id, permissions):
|
||||||
try:
|
try:
|
||||||
await self.dispatcher.bot.restrict_chat_member(chat_id, user_id, permissions=permissions)
|
await self.dispatcher.bot.restrict_chat_member(chat_id, user_id, permissions=permissions)
|
||||||
@ -55,6 +65,12 @@ class Tools:
|
|||||||
parse_mode=ParseMode.MARKDOWN)
|
parse_mode=ParseMode.MARKDOWN)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def set_mute(cls, user_id, until):
|
||||||
|
user = cls.get_user(user_id)
|
||||||
|
user.muted_until = until
|
||||||
|
user.save()
|
||||||
|
|
||||||
async def kick_chat_member(self, chat_id, user_id):
|
async def kick_chat_member(self, chat_id, user_id):
|
||||||
try:
|
try:
|
||||||
await self.dispatcher.bot.kick_chat_member(chat_id, user_id)
|
await self.dispatcher.bot.kick_chat_member(chat_id, user_id)
|
||||||
@ -101,6 +117,11 @@ class Tools:
|
|||||||
user = cls.get_user(user_id)
|
user = cls.get_user(user_id)
|
||||||
return user.banned, user.ban_msg, user.ban_by
|
return user.banned, user.ban_msg, user.ban_by
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def is_muted(cls, user_id):
|
||||||
|
user = cls.get_user(user_id)
|
||||||
|
return False if user.muted_until == 0 else time.time() >= user.muted_until
|
||||||
|
|
||||||
async def ban_user(self, msg: aiogram.types.Message):
|
async def ban_user(self, msg: aiogram.types.Message):
|
||||||
user = self.get_user(msg.reply_to_message.from_user.id)
|
user = self.get_user(msg.reply_to_message.from_user.id)
|
||||||
|
|
||||||
@ -122,3 +143,4 @@ class Tools:
|
|||||||
Mailing(user_id=user_id).save()
|
Mailing(user_id=user_id).save()
|
||||||
|
|
||||||
return registered
|
return registered
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user