This repository has been archived on 2024-07-28. You can view files and clone it, but cannot push or open issues or pull requests.
moderator-bot/handlers/groups/main.py

127 lines
3.3 KiB
Python
Raw Normal View History

2022-08-07 04:45:35 -04:00
from load import bot, dp, types
2023-02-18 08:16:54 -05:00
from aiogram import Bot
2022-08-07 04:45:35 -04:00
import config
2023-02-18 08:16:54 -05:00
from aiogram.filters import Command
from filters import MessageReplied
from filters import ChatTypeFilter
2022-11-06 03:48:10 -05:00
from database import Member
2022-08-07 04:45:35 -04:00
2023-02-18 08:16:54 -05:00
from aiogram.filters.chat_member_updated import \
ChatMemberUpdatedFilter, JOIN_TRANSITION, ChatMemberUpdated
2022-12-01 05:54:32 -05:00
2023-02-18 08:16:54 -05:00
@dp.chat_member(
ChatMemberUpdatedFilter(member_status_changed=JOIN_TRANSITION)
)
async def welcome_message(event: ChatMemberUpdated, _bot: Bot):
user = Member.get_or_none(Member.user_id == event.from_user.id)
if (user):
2023-02-18 08:16:54 -05:00
await _bot.send_message(
chat_id=event.chat.id,
text=f"Hi, {user.first_name} again"
)
if not (user):
Member.create(
2023-02-18 08:16:54 -05:00
user_id=event.from_user.id,
first_name=event.from_user.first_name,
username=event.from_user.username,
)
2023-02-18 08:16:54 -05:00
await _bot.send_message(
chat_id=event.chat.id,
text=f"Hi, [{user.first_name}](tg://user?id={user.id})!\n"
"Please, read [chat rules](https://nometa.xyz)"
)
2023-02-18 08:16:54 -05:00
@dp.message(
Command("start", "help"),
ChatTypeFilter("supergroup")
2023-01-22 05:27:20 -05:00
)
async def start_command_group(message: types.Message):
2022-08-07 04:45:35 -04:00
await message.answer((
2023-02-18 08:16:54 -05:00
f"Hi, [{message.from_user.first_name}](tg://user?id={message.from_user.id})!\n"
2022-08-07 04:45:35 -04:00
"My commands:\n"
2022-12-01 05:54:32 -05:00
" /help , /start - read the message\n"
2023-02-18 08:16:54 -05:00
" /me , /bio - member information (if member group)")
2022-08-07 04:45:35 -04:00
)
2023-01-22 05:27:20 -05:00
2023-02-18 08:16:54 -05:00
@dp.message(
Command("leave"),
ChatTypeFilter("supergroup")
2023-01-22 05:27:20 -05:00
)
async def leave_group(message: types.Message):
2022-11-06 09:57:15 -05:00
user = message.from_user
2022-12-01 05:54:32 -05:00
if (message.text.split()[0] != "I UNDERSTAND!"):
2022-11-06 09:57:15 -05:00
await message.answer("use /leave I UNDERSTAND")
return
2022-12-01 05:54:32 -05:00
Member.delete().get(Member.user_id == user.id)
2022-11-06 09:57:15 -05:00
2023-01-22 05:27:20 -05:00
status = await bot.kick_chat_member(
chat_id=message.chat.id,
user_id=user.id,
until_date=None
)
2022-11-06 09:57:15 -05:00
if status:
2023-01-22 05:27:20 -05:00
await message.answer((
f"User [{user.first_name}](tg://user?id={user.id})"
"has leaved chat for forever"
2023-02-18 08:16:54 -05:00
))
2022-11-06 09:57:15 -05:00
2023-01-22 05:27:20 -05:00
Member.delete().where(Member.user_id == user.id).execute()
2022-08-16 06:28:08 -04:00
2023-02-18 08:16:54 -05:00
@dp.message(
Command("bio", "me"),
ChatTypeFilter("supergroup")
2023-01-22 05:27:20 -05:00
)
2022-08-07 04:45:35 -04:00
async def get_information(message: types.Message):
2022-12-01 05:54:32 -05:00
user = Member.get(Member.user_id == message.from_user.id)
2022-08-07 04:45:35 -04:00
await message.answer((
2022-11-06 03:48:10 -05:00
f"[{user.first_name}](tg://user?id={user.user_id}) ({user.role})\n"
2023-02-18 08:16:54 -05:00
f"Warns: {user.warns}/{config.limit_of_warns}"
))
2022-08-07 04:45:35 -04:00
2022-08-16 06:28:08 -04:00
2023-02-18 08:16:54 -05:00
@dp.message(
Command("report"),
MessageReplied(),
ChatTypeFilter("supergroup")
2022-12-01 05:54:32 -05:00
)
async def user_report(message: types.Message):
2022-08-07 04:45:35 -04:00
args = message.text.split()
2022-12-01 05:54:32 -05:00
2022-08-07 04:45:35 -04:00
if (len(args) != 2):
2023-01-22 05:27:20 -05:00
await message.answer("/report (reason)")
2022-08-07 04:45:35 -04:00
return
reported_user = message.reply_to_message.from_user
reporter_user = message.from_user
2023-01-22 05:27:20 -05:00
reason = args[1]
2022-08-07 04:45:35 -04:00
2022-12-01 05:54:32 -05:00
await bot.send_message(
config.second_group_id,
(
2022-12-25 09:17:05 -05:00
"Complaint about: [{}](tg://user?id={})\n"
2023-01-22 05:27:20 -05:00
"Complaint from: [{}](tg://user?id={})\n\n"
"Note: {}\n"
2022-12-01 05:54:32 -05:00
"{}"
).format(
reported_user.first_name,
reported_user.id,
reporter_user.first_name,
reporter_user.id,
reason,
2023-01-22 05:27:20 -05:00
message.reply_to_message.link("link message", as_html=False)
2023-02-18 08:16:54 -05:00
)
2022-12-01 05:54:32 -05:00
)