首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >QQ机器人模块插件,qq群自动回复机器人,关键字匹配QQ机器人工具【python】

QQ机器人模块插件,qq群自动回复机器人,关键字匹配QQ机器人工具【python】

原创
作者头像
用户11749621
发布2025-07-25 11:03:20
发布2025-07-25 11:03:20
8320
举报

下载地址:https://www.pan38.com/dow/share.php?code=JCnzE 提取密码:8179

代码包含主程序、配置管理和网络请求三个模块,实现了关键词精确匹配和正则表达式匹配两种响应方式。

代码语言:txt
复制

from nonebot import get_driver
from nonebot import on_message
from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent
from nonebot.rule import keyword
import re
from datetime import datetime

class KeywordManager:
    def __init__(self):
        self.keywords = {
            "帮助": "输入以下指令:\n#天气 查天气\n#新闻 看新闻\n#帮助 获取帮助",
            "时间": f"当前时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}",
            "你好": "你好呀!我是自动回复机器人~"
        }
        self.regex_patterns = {
            re.compile(r"^天气\s+(\w+)"): self.get_weather,
            re.compile(r"^新闻\s+(\d+)条"): self.get_news
        }
    
    async def get_weather(self, city: str):
        return f"{city}天气预报:晴转多云 25-32℃"
    
    async def get_news(self, count: str):
        return f"正在获取最新{count}条新闻..."

manager = KeywordManager()
matcher = on_message(priority=10)

@matcher.handle()
async def handle_message(event: GroupMessageEvent):
    msg = str(event.get_message()).strip()
    
    # 精确关键词匹配
    if msg in manager.keywords:
        await matcher.finish(manager.keywords[msg])
    
    # 正则匹配
    for pattern, handler in manager.regex_patterns.items():
        if match := pattern.match(msg):
            result = await handler(match.group(1))
            await matcher.finish(result)

             os
from pydantic import BaseSettings

class Config(BaseSettings):
    # 机器人QQ号
    bot_qq: int = 123456789
    # 管理员列表
    admin_list: list = [987654321]
    # API请求超时
    api_timeout: int = 30
    # 消息冷却时间
    cooldown: int = 3

    class Config:
        extra = "ignore"

config = Config(_env_file=".env")

 typing import Optional
import httpx
from config import config

async def fetch_url(url: str, params: Optional[dict] = None):
    async with httpx.AsyncClient(timeout=config.api_timeout) as client:
        try:
            resp = await client.get(url, params=params)
            return resp.json()
        except Exception as e:
            print(f"请求失败: {e}")
            return None

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档