mirror of
https://github.com/PaiGramTeam/PamGram.git
synced 2024-11-25 23:49:11 +00:00
🎨 添加检测验证缝隙间发送消息到群验证模块
This commit is contained in:
parent
437107dd35
commit
8c70f81562
@ -9,6 +9,7 @@ from telegram.error import BadRequest
|
|||||||
from telegram.ext import CallbackContext, CallbackQueryHandler
|
from telegram.ext import CallbackContext, CallbackQueryHandler
|
||||||
from telegram.helpers import escape_markdown
|
from telegram.helpers import escape_markdown
|
||||||
|
|
||||||
|
from core.base.mtproto import MTProto
|
||||||
from core.bot import bot
|
from core.bot import bot
|
||||||
from core.plugin import Plugin, handler
|
from core.plugin import Plugin, handler
|
||||||
from core.quiz import QuizService
|
from core.quiz import QuizService
|
||||||
@ -31,7 +32,7 @@ FullChatPermissions = ChatPermissions(
|
|||||||
class GroupJoiningVerification(Plugin):
|
class GroupJoiningVerification(Plugin):
|
||||||
"""群验证模块"""
|
"""群验证模块"""
|
||||||
|
|
||||||
def __init__(self, quiz_service: QuizService = None):
|
def __init__(self, quiz_service: QuizService = None, mtp: MTProto = None):
|
||||||
self.quiz_service = quiz_service
|
self.quiz_service = quiz_service
|
||||||
self.time_out = 120
|
self.time_out = 120
|
||||||
self.kick_time = 120
|
self.kick_time = 120
|
||||||
@ -39,6 +40,7 @@ class GroupJoiningVerification(Plugin):
|
|||||||
self.lock = asyncio.Lock()
|
self.lock = asyncio.Lock()
|
||||||
self.chat_administrators_cache: Dict[Union[str, int], Tuple[float, List[ChatMember]]] = {}
|
self.chat_administrators_cache: Dict[Union[str, int], Tuple[float, List[ChatMember]]] = {}
|
||||||
self.is_refresh_quiz = False
|
self.is_refresh_quiz = False
|
||||||
|
self.mtp = mtp.client
|
||||||
|
|
||||||
async def __async_init__(self):
|
async def __async_init__(self):
|
||||||
logger.info("群验证模块正在刷新问题列表")
|
logger.info("群验证模块正在刷新问题列表")
|
||||||
@ -296,9 +298,9 @@ class GroupJoiningVerification(Plugin):
|
|||||||
try:
|
try:
|
||||||
question_message = await message.reply_markdown_v2(reply_message,
|
question_message = await message.reply_markdown_v2(reply_message,
|
||||||
reply_markup=InlineKeyboardMarkup(buttons))
|
reply_markup=InlineKeyboardMarkup(buttons))
|
||||||
except BadRequest as error:
|
except BadRequest as exc:
|
||||||
await message.reply_text("派蒙分心了一下,不小心忘记你了,你只能先退出群再重新进来吧。")
|
await message.reply_text("派蒙分心了一下,不小心忘记你了,你只能先退出群再重新进来吧。")
|
||||||
raise error
|
raise exc
|
||||||
context.job_queue.run_once(callback=self.kick_member_job, when=self.time_out,
|
context.job_queue.run_once(callback=self.kick_member_job, when=self.time_out,
|
||||||
name=f"{chat.id}|{user.id}|auth_kick", chat_id=chat.id, user_id=user.id,
|
name=f"{chat.id}|{user.id}|auth_kick", chat_id=chat.id, user_id=user.id,
|
||||||
job_kwargs={"replace_existing": True, "id": f"{chat.id}|{user.id}|auth_kick"})
|
job_kwargs={"replace_existing": True, "id": f"{chat.id}|{user.id}|auth_kick"})
|
||||||
@ -313,3 +315,19 @@ class GroupJoiningVerification(Plugin):
|
|||||||
chat_id=chat.id, user_id=user.id,
|
chat_id=chat.id, user_id=user.id,
|
||||||
job_kwargs={"replace_existing": True,
|
job_kwargs={"replace_existing": True,
|
||||||
"id": f"{chat.id}|{user.id}|auth_clean_question_message"})
|
"id": f"{chat.id}|{user.id}|auth_clean_question_message"})
|
||||||
|
if self.mtp is not None:
|
||||||
|
from pyrogram.errors import BadRequest as MTPBadRequest, FloodWait as MTPFloodWait
|
||||||
|
try:
|
||||||
|
messages_list = await self.mtp.get_messages(chat.id, message_ids=[message.id, question_message.id])
|
||||||
|
for find_message in messages_list:
|
||||||
|
if find_message.from_user.id == user.id:
|
||||||
|
await self.mtp.delete_messages(chat_id=chat.id, message_ids=find_message.id)
|
||||||
|
logger.info(f"用户 {user.full_name}[{user.id}] 在群 {chat.title}[{chat.id}] 验证缝隙间发送消息"
|
||||||
|
"现已删除")
|
||||||
|
except MTPFloodWait:
|
||||||
|
logger.warning("调用 mtp 触发洪水限制")
|
||||||
|
continue
|
||||||
|
except MTPBadRequest as exc:
|
||||||
|
logger.warning("调用 mtp 请求错误")
|
||||||
|
logger.exception(exc)
|
||||||
|
continue
|
||||||
|
Loading…
Reference in New Issue
Block a user