feat: welcome the new users (disabled by default)
This commit is contained in:
parent
d06bc1f2c9
commit
2cd679f5ff
3 changed files with 37 additions and 1 deletions
|
|
@ -6,7 +6,7 @@ from os import getenv
|
||||||
from aiogram import Bot, Dispatcher, Router
|
from aiogram import Bot, Dispatcher, Router
|
||||||
from aiogram.client.default import DefaultBotProperties
|
from aiogram.client.default import DefaultBotProperties
|
||||||
from aiogram.enums import ParseMode
|
from aiogram.enums import ParseMode
|
||||||
from aiogram.filters import CommandStart, Command
|
from aiogram.filters import CommandStart, Command, IS_NOT_MEMBER, IS_MEMBER, ChatMemberUpdatedFilter
|
||||||
from aiogram.client.session.aiohttp import AiohttpSession
|
from aiogram.client.session.aiohttp import AiohttpSession
|
||||||
from aiogram import F
|
from aiogram import F
|
||||||
|
|
||||||
|
|
@ -28,6 +28,7 @@ from core.stats import handle_stats_command
|
||||||
from core.middleware.stats import MessageStatsMiddleware
|
from core.middleware.stats import MessageStatsMiddleware
|
||||||
from core.middleware.unpin import UnpinChannelMsgMiddleware
|
from core.middleware.unpin import UnpinChannelMsgMiddleware
|
||||||
from core.rikki_hit import handle_query_hit_command
|
from core.rikki_hit import handle_query_hit_command
|
||||||
|
from core.welcome import handle_tg_welcome
|
||||||
|
|
||||||
TOKEN = getenv("BOT_TOKEN")
|
TOKEN = getenv("BOT_TOKEN")
|
||||||
|
|
||||||
|
|
@ -78,6 +79,8 @@ class TelegramAdapter:
|
||||||
# repeater 模块
|
# repeater 模块
|
||||||
repeater_router.message(F.chat.type.in_({'group', 'supergroup'}))(MessageRepeater().handle_message)
|
repeater_router.message(F.chat.type.in_({'group', 'supergroup'}))(MessageRepeater().handle_message)
|
||||||
router.message(F.text.regexp(r'(n|N) ?网尾号 ?[0-9]*'))(handle_nexusmods_id)
|
router.message(F.text.regexp(r'(n|N) ?网尾号 ?[0-9]*'))(handle_nexusmods_id)
|
||||||
|
# welcome 模块
|
||||||
|
router.chat_member(ChatMemberUpdatedFilter(IS_NOT_MEMBER >> IS_MEMBER))(handle_tg_welcome)
|
||||||
router.message(F.text == '我是笨蛋')(handle_baka)
|
router.message(F.text == '我是笨蛋')(handle_baka)
|
||||||
# 在有更为妥当的方式检查命令触发者是不是原来的触发者之前先不启用
|
# 在有更为妥当的方式检查命令触发者是不是原来的触发者之前先不启用
|
||||||
#router.message(F.text == '雪豹闭嘴')(handle_self_delete)
|
#router.message(F.text == '雪豹闭嘴')(handle_self_delete)
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,10 @@ features:
|
||||||
unpin:
|
unpin:
|
||||||
enable: true
|
enable: true
|
||||||
regex: ''
|
regex: ''
|
||||||
|
# 启用欢迎新成员
|
||||||
|
welcome:
|
||||||
|
enable: false
|
||||||
|
message: "嘤嘤嘤"
|
||||||
|
|
||||||
# group features settings
|
# group features settings
|
||||||
# 群组 id,使用 bot api(bot 内置的 info 命令)
|
# 群组 id,使用 bot api(bot 内置的 info 命令)
|
||||||
|
|
|
||||||
29
core/welcome.py
Normal file
29
core/welcome.py
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from aiogram.enums import ChatMemberStatus
|
||||||
|
from aiogram.types import ChatMemberUpdated
|
||||||
|
|
||||||
|
from config import config
|
||||||
|
|
||||||
|
|
||||||
|
async def get_welcome_message(chat_id: int) -> str | None:
|
||||||
|
if chat_id is None:
|
||||||
|
return None
|
||||||
|
elif not config.is_feature_enabled('welcome', chat_id):
|
||||||
|
logging.debug(f"收到了欢迎事件,但是 welcome 功能未启用,跳过处理")
|
||||||
|
return None
|
||||||
|
# 根据 chat_id 获取不同的欢迎消息
|
||||||
|
return config.get_feature_config('welcome', chat_id)['message']
|
||||||
|
|
||||||
|
|
||||||
|
async def handle_tg_welcome(event: ChatMemberUpdated):
|
||||||
|
"""
|
||||||
|
处理用户加入群组的事件,发送欢迎消息
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
if event.new_chat_member.status == ChatMemberStatus.MEMBER:
|
||||||
|
welcome_message = await get_welcome_message(event.chat.id)
|
||||||
|
if welcome_message:
|
||||||
|
await event.answer(welcome_message)
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"Error in handle_tg_welcome: {e}")
|
||||||
Loading…
Add table
Add a link
Reference in a new issue