mirror of
https://github.com/Redume/StarBoard.git
synced 2025-04-07 04:05:28 +01:00
refactor: redesigned the filters for groups and supergroups
This commit is contained in:
parent
098b520138
commit
0986edac22
4 changed files with 19 additions and 10 deletions
|
@ -3,12 +3,12 @@ from aiogram.filters import Command
|
|||
from aiogram.types import Message
|
||||
|
||||
from database.database import pg_con
|
||||
from filters.chat_type import ChatTypeFilter
|
||||
|
||||
router = Router()
|
||||
|
||||
@router.message(Command('set_channel'))
|
||||
@router.message(Command('set_channel'), ChatTypeFilter(chat_type=["group", "supergroup"]))
|
||||
async def set_channel(message: Message):
|
||||
print(message)
|
||||
args = message.text.split()
|
||||
|
||||
if len(args) < 2:
|
||||
|
|
|
@ -2,15 +2,13 @@ from aiogram import types, Router
|
|||
from aiogram.filters import ChatMemberUpdatedFilter, IS_MEMBER
|
||||
|
||||
from database.database import pg_con
|
||||
from filters.chat_type import ChatTypeFilter
|
||||
|
||||
router = Router()
|
||||
|
||||
|
||||
@router.my_chat_member(ChatMemberUpdatedFilter(IS_MEMBER))
|
||||
@router.my_chat_member(ChatMemberUpdatedFilter(IS_MEMBER), ChatTypeFilter(chat_type=["group", "supergroup"]))
|
||||
async def join_chat(event: types.Message):
|
||||
if event.chat.type not in {'group', 'supergroup'}:
|
||||
return
|
||||
|
||||
conn = await pg_con()
|
||||
data = await conn.fetch('SELECT emoji_list FROM chat WHERE chat_id = $1', event.chat.id)
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ from aiogram.exceptions import TelegramBadRequest
|
|||
|
||||
from bot import bot
|
||||
from database.database import pg_con
|
||||
from filters.chat_type import ChatTypeFilter
|
||||
|
||||
router = Router()
|
||||
|
||||
|
@ -25,11 +26,8 @@ async def update_reaction_count(conn, chat_id, message_id, delta):
|
|||
)
|
||||
|
||||
|
||||
@router.message_reaction()
|
||||
@router.message_reaction(ChatTypeFilter(chat_type=["group", "supergroup"]))
|
||||
async def register_message_reaction(event: types.MessageReactionUpdated):
|
||||
if event.chat.type not in {'group', 'supergroup'}:
|
||||
return
|
||||
|
||||
conn = await pg_con()
|
||||
|
||||
data_reaction = await conn.fetchval('SELECT emoji_list FROM chat WHERE chat_id = $1', event.chat.id)
|
||||
|
|
13
filters/chat_type.py
Normal file
13
filters/chat_type.py
Normal file
|
@ -0,0 +1,13 @@
|
|||
from aiogram.filters import BaseFilter
|
||||
from aiogram.types import Message
|
||||
|
||||
# https://stackoverflow.com/a/78272229/20781634
|
||||
class ChatTypeFilter(BaseFilter):
|
||||
def __init__(self, chat_type: str | list):
|
||||
self.chat_type = chat_type
|
||||
|
||||
async def __call__(self, message: Message) -> bool:
|
||||
if isinstance(self.chat_type, str):
|
||||
return message.chat.type == self.chat_type
|
||||
else:
|
||||
return message.chat.type in self.chat_type
|
Loading…
Add table
Reference in a new issue