下载地址:https://www.pan38.com/dow/share.php?code=JCnzE 提取密码:8179
代码包含主程序、配置管理和网络请求三个模块,实现了关键词精确匹配和正则表达式匹配两种响应方式。
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 删除。