mirror of
https://github.com/civsocit/olgram.git
synced 2023-07-22 01:29:12 +03:00
invite\left
This commit is contained in:
parent
1ffa6b58f8
commit
2555d155a0
@ -10,7 +10,7 @@ from aioredis import Redis
|
|||||||
import typing as ty
|
import typing as ty
|
||||||
from olgram.settings import ServerSettings
|
from olgram.settings import ServerSettings
|
||||||
|
|
||||||
from olgram.models.models import Bot
|
from olgram.models.models import Bot, GroupChat
|
||||||
|
|
||||||
db_bot_instance: ContextVar[Bot] = ContextVar('db_bot_instance')
|
db_bot_instance: ContextVar[Bot] = ContextVar('db_bot_instance')
|
||||||
|
|
||||||
@ -59,6 +59,29 @@ async def message_handler(message, *args, **kwargs):
|
|||||||
await message.forward(super_chat_id)
|
await message.forward(super_chat_id)
|
||||||
|
|
||||||
|
|
||||||
|
async def receive_invite(message: types.Message):
|
||||||
|
bot = db_bot_instance.get()
|
||||||
|
for member in message.new_chat_members:
|
||||||
|
if member.id == message.bot.id:
|
||||||
|
chat, _ = await GroupChat.get_or_create(chat_id=message.chat.id,
|
||||||
|
defaults={"name": message.chat.full_name})
|
||||||
|
if chat not in await bot.group_chats.all():
|
||||||
|
await bot.group_chats.add(chat)
|
||||||
|
await bot.save()
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
|
async def receive_left(message: types.Message):
|
||||||
|
bot = db_bot_instance.get()
|
||||||
|
if message.left_chat_member.id == message.bot.id:
|
||||||
|
chat = await bot.group_chats.filter(chat_id=message.chat.id).first()
|
||||||
|
if chat:
|
||||||
|
await bot.group_chats.remove(chat)
|
||||||
|
if bot.group_chat == chat:
|
||||||
|
bot.group_chat = None
|
||||||
|
await bot.save(update_fields=["group_chat"])
|
||||||
|
|
||||||
|
|
||||||
class CustomRequestHandler(WebhookRequestHandler):
|
class CustomRequestHandler(WebhookRequestHandler):
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
@ -83,6 +106,8 @@ class CustomRequestHandler(WebhookRequestHandler):
|
|||||||
types.ContentType.STICKER,
|
types.ContentType.STICKER,
|
||||||
types.ContentType.VIDEO,
|
types.ContentType.VIDEO,
|
||||||
types.ContentType.VOICE])
|
types.ContentType.VOICE])
|
||||||
|
dp.register_message_handler(receive_invite, content_types=[types.ContentType.NEW_CHAT_MEMBERS])
|
||||||
|
dp.register_message_handler(receive_left, content_types=[types.ContentType.LEFT_CHAT_MEMBER])
|
||||||
|
|
||||||
return dp
|
return dp
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user