Added banhammer

This commit is contained in:
2024-02-09 18:53:23 +05:00
parent e89cb04c02
commit b95a987026
2 changed files with 48 additions and 1 deletions

View File

@@ -3,6 +3,7 @@ from typing import List
from aiogram import Bot, F, types from aiogram import Bot, F, types
from aiogram.enums import ChatMemberStatus from aiogram.enums import ChatMemberStatus
from aiogram.filters import Command, CommandStart from aiogram.filters import Command, CommandStart
from aiogram.utils.keyboard import InlineKeyboardBuilder
from handlers.handler import Handler from handlers.handler import Handler
from neuroapi import neuroapi from neuroapi import neuroapi
@@ -31,9 +32,14 @@ class UserCommands(Handler):
admins: List[AdminType] = await neuroapi.admin.get() admins: List[AdminType] = await neuroapi.admin.get()
canReply = True canReply = True
for admin in admins: for admin in admins:
bankeyboard = types.InlineKeyboardMarkup(inline_keyboard=[
[
types.InlineKeyboardButton(text='❌ Баннах', callback_data=f'ban {message.from_user.id}')
]
])
await bot.send_message(admin.user_id, f'Вам новое сообщение от пользователя {message.from_user.full_name}. ' + await bot.send_message(admin.user_id, f'Вам новое сообщение от пользователя {message.from_user.full_name}. ' +
(f'\nНик: @{message.from_user.username}' if message.from_user.username else f'ID: {message.from_user.id}') + (f'\nНик: @{message.from_user.username}' if message.from_user.username else f'ID: {message.from_user.id}') +
f'\nПользователь{" не " if user_in_channel else " "}состоит в канале') f'\nПользователь{" не " if user_in_channel else " "}состоит в канале.', reply_markup=bankeyboard)
try: try:
forwarded_message = await bot.forward_message(admin.user_id, message.chat.id, message.message_id) forwarded_message = await bot.forward_message(admin.user_id, message.chat.id, message.message_id)
if forwarded_message.forward_from is None: if forwarded_message.forward_from is None:
@@ -41,3 +47,30 @@ class UserCommands(Handler):
except: except:
pass pass
await message.reply('Ваше сообщение было отправлено администраторам'+('' if canReply else '\nНо они не смогут вам ответить из-за ваших настроек конфиденциальности.')) await message.reply('Ваше сообщение было отправлено администраторам'+('' if canReply else '\nНо они не смогут вам ответить из-за ваших настроек конфиденциальности.'))
@self.router.callback_query(lambda query: True)
async def handle_button_click(callback_query: types.CallbackQuery):
admins: List[AdminType] = await neuroapi.admin.get()
callback_data = callback_query.data.split()
unbankeyboard = types.InlineKeyboardMarkup(inline_keyboard=[
[
types.InlineKeyboardButton(text='✅ Пардон, мсье', callback_data=f'unban {callback_data[1]}')
]
])
for admin in admins:
if callback_data[0] == 'ban':
try:
await neuroapi.user.ban(callback_data[1])
await bot.send_message(admin.user_id, f'Великий банхаммер покарал пользователя {callback_data[1]}.', reply_markup=unbankeyboard)
except Exception as ex:
await bot.answer_callback_query(callback_query.id, f'Не смог забанить, {ex}')
pass
await bot.answer_callback_query(callback_query.id)
if callback_data[0] == 'unban':
try:
await bot.send_message(admin.user_id, f'Великий банхаммер пощадил пользователя {callback_data[1]}.')
except:
await neuroapi.user.unban(callback_data[1])
await bot.answer_callback_query(callback_query.id, f'Банхаммер не прощает, {ex}')
pass
await bot.answer_callback_query(callback_query.id)

View File

@@ -12,3 +12,17 @@ class User(ApiMethod):
data = await response.json() data = await response.json()
if 'statusCode' in data: if 'statusCode' in data:
raise Exception(data['message']) raise Exception(data['message'])
async def ban(self, id: str):
async with ClientSession() as session:
response = await session.put(self.api_url+'/user/ban/' + id)
data = await response.json()
if 'statusCode' in data:
raise Exception(f'Request failed with status code {response.status}')
async def unban(self, id: str):
async with ClientSession() as session:
response = await session.put(self.api_url+'/user/unban/' + id)
data = await response.json()
if 'statusCode' in data:
raise Exception(f'Request failed with status code {response.status}')