mirror of
https://github.com/MrSedan/neuro-reply-bot-reworked.git
synced 2026-01-14 21:49:42 +03:00
35 lines
1.9 KiB
Python
35 lines
1.9 KiB
Python
from typing import List
|
||
|
||
from aiogram import F, types
|
||
from aiogram.enums import ChatMemberStatus
|
||
|
||
from neuroapi import neuroapi
|
||
from neuroapi.types import Admin as AdminType
|
||
from neuroapi.types import BotSettings
|
||
|
||
from .handler import MessageHandlerABC
|
||
|
||
|
||
class ForwardMessageCommand(MessageHandlerABC):
|
||
"""Command to forward messages from users to admins. Also checking if they're in the channel"""
|
||
filter = F.chat.type == 'private'
|
||
async def _command(self, message: types.Message):
|
||
self.settings = BotSettings.get_instance()
|
||
user = await self.bot.get_chat_member(self.settings.channel, message.from_user.id)
|
||
if user is None:
|
||
await message.reply('Ошибка')
|
||
return
|
||
user_in_channel = user.status == ChatMemberStatus.LEFT
|
||
admins: List[AdminType] = await neuroapi.admin.get()
|
||
canReply = True
|
||
for admin in admins:
|
||
await self.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Пользователь{" не " if user_in_channel else " "}состоит в канале')
|
||
try:
|
||
forwarded_message = await self.bot.forward_message(admin.user_id, message.chat.id, message.message_id)
|
||
if forwarded_message.forward_from is None:
|
||
canReply = False
|
||
except:
|
||
pass
|
||
await message.reply('Ваше сообщение было отправлено администраторам'+('' if canReply else '\nНо они не смогут вам ответить из-за ваших настроек конфиденциальности.')) |