Files
tg-spam-guard/handlers/night_mode.py
T
2026-07-06 19:26:00 +08:00

55 lines
1.6 KiB
Python

"""夜间模式 handler"""
import asyncio
import logging
from telegram import Update
from telegram.ext import ContextTypes, CommandHandler, filters
import config
from services.admin_utils import require_admin
from services.night_scheduler import enable_night_mode, disable_night_mode
logger = logging.getLogger("spam_guard")
async def cmd_night(update: Update, context: ContextTypes.DEFAULT_TYPE):
"""手动控制夜间模式"""
if not await require_admin(update, context):
return
args = context.args
if not args:
await update.message.reply_text(
"🌙 夜间模式\n\n"
"用法:\n"
"/night on 开启\n"
"/night off 关闭"
)
asyncio.create_task(auto_delete(update.message))
return
cmd = args[0].lower()
if cmd == "on":
await enable_night_mode(update.effective_chat)
reply = await update.message.reply_text("🌙 夜间模式已开启,全员禁言")
elif cmd == "off":
await disable_night_mode(update.effective_chat)
reply = await update.message.reply_text("☀️ 夜间模式已关闭,恢复发言")
else:
reply = await update.message.reply_text("❓ 用法: /night on|off")
asyncio.create_task(auto_delete(update.message))
asyncio.create_task(auto_delete(reply))
async def auto_delete(message, seconds=60):
try:
await asyncio.sleep(seconds)
await message.delete()
except Exception:
pass
def register_night_mode(app):
app.add_handler(CommandHandler("night", cmd_night, filters.ChatType.GROUPS))