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 aiogram.types import Message
|
||||||
|
|
||||||
from database.database import pg_con
|
from database.database import pg_con
|
||||||
|
from filters.chat_type import ChatTypeFilter
|
||||||
|
|
||||||
router = Router()
|
router = Router()
|
||||||
|
|
||||||
@router.message(Command('set_channel'))
|
@router.message(Command('set_channel'), ChatTypeFilter(chat_type=["group", "supergroup"]))
|
||||||
async def set_channel(message: Message):
|
async def set_channel(message: Message):
|
||||||
print(message)
|
|
||||||
args = message.text.split()
|
args = message.text.split()
|
||||||
|
|
||||||
if len(args) < 2:
|
if len(args) < 2:
|
||||||
|
|
|
@ -2,15 +2,13 @@ from aiogram import types, Router
|
||||||
from aiogram.filters import ChatMemberUpdatedFilter, IS_MEMBER
|
from aiogram.filters import ChatMemberUpdatedFilter, IS_MEMBER
|
||||||
|
|
||||||
from database.database import pg_con
|
from database.database import pg_con
|
||||||
|
from filters.chat_type import ChatTypeFilter
|
||||||
|
|
||||||
router = Router()
|
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):
|
async def join_chat(event: types.Message):
|
||||||
if event.chat.type not in {'group', 'supergroup'}:
|
|
||||||
return
|
|
||||||
|
|
||||||
conn = await pg_con()
|
conn = await pg_con()
|
||||||
data = await conn.fetch('SELECT emoji_list FROM chat WHERE chat_id = $1', event.chat.id)
|
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 bot import bot
|
||||||
from database.database import pg_con
|
from database.database import pg_con
|
||||||
|
from filters.chat_type import ChatTypeFilter
|
||||||
|
|
||||||
router = Router()
|
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):
|
async def register_message_reaction(event: types.MessageReactionUpdated):
|
||||||
if event.chat.type not in {'group', 'supergroup'}:
|
|
||||||
return
|
|
||||||
|
|
||||||
conn = await pg_con()
|
conn = await pg_con()
|
||||||
|
|
||||||
data_reaction = await conn.fetchval('SELECT emoji_list FROM chat WHERE chat_id = $1', event.chat.id)
|
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