Skip to content

Leveveve/Weather-Query-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

天气查询插件 (Weather Query Plugin)

一个为 KiraAI 聊天机器人开发的天气查询插件,通过爬取中国天气网(www.weather.com.cn)提供中国城市的天气信息。

功能特性

  • ✅ 支持查询中国主要城市的天气信息
  • ✅ 支持多日期查询(今天、明天、后天)
  • ✅ 智能缓存机制,减少网络请求
  • ✅ 支持命令触发和自然语言触发
  • ✅ 支持所有者默认城市功能(隐私保护)
  • ✅ 支持温度范围显示(最低~最高)
  • ✅ 支持天气条件转换(如"晴转多云")
  • ✅ 支持清除缓存功能
  • ✅ 支持中英文命令
  • ✅ 基于用户 ID 的权限控制(支持 QQ、Telegram 等多平台)

安装

1. 安装插件

插件本体安装

将插件文件夹 weather 复制到 KiraAI 的 data/plugins 目录下。

插件依赖安装

weather 插件文件夹目录下运行以下命令安装插件依赖(注意需要在虚拟环境中运行):

pip install -r requirements.txt

2. 配置插件

在 KiraAI 的 WebUI 配置页面或 data/config/plugins/weather.json 中配置:

{
  "cache_expiry_hours": 6,
  "proxy": "",
  "command_prefix": "/",
  "enable_natural_language": true,
  "allowed_sessions": [],
  "owner_city": "",
  "owner_id": ""
}

3. 配置项说明

配置项 类型 默认值 说明
cache_expiry_hours 整数 6 缓存过期时间(小时)。天气数据将缓存此时间后从网络刷新。
proxy 字符串 null 可选代理服务器 URL,如 "http://127.0.0.1:7890"
command_prefix 字符串 "/" 命令前缀,用于触发天气查询
enable_natural_language 布尔值 true 是否启用自然语言触发
allowed_sessions 列表 [] 允许使用的会话列表,格式为 <adapter_name>:<gm/dm>:<session_id>,留空则允许所有会话
owner_city 字符串 "" Bot 所有者的默认城市,所有者查询天气时未指定城市将使用此城市,留空则禁用此功能
owner_id 字符串 "" Bot 所有者的用户ID(支持QQ号、Telegram用户ID等)。所有者可以在任意会话中清除缓存和不带城市的天气查询。留空则禁用此功能

使用示例

命令触发

中文命令:

  • /天气 - 查询所有者默认城市的今天天气(仅限所有者)
  • /天气 北京 - 查询北京今天的天气
  • /天气 上海 明天 - 查询上海明天的天气
  • /天气 广州 后天 - 查询广州后天的天气
  • /天气 清除缓存 - 清除所有天气缓存(仅限所有者)

英文命令:

  • /weather - 查询所有者默认城市的今天天气(仅限所有者)
  • /weather 北京 - 查询北京今天的天气
  • /weather 上海 tomorrow - 查询上海明天的天气
  • /weather 广州 the day after tomorrow - 查询广州后天的天气
  • /weather clear cache - 清除所有天气缓存(仅限所有者)

自然语言触发

如果启用了自然语言触发(enable_natural_language: true),可以直接使用自然语言查询天气:

  • "今天天气怎么样?" - 查询所有者默认城市的今天天气(仅限所有者)
  • "北京天气" - 查询北京今天的天气
  • "上海明天天气" - 查询上海明天的天气
  • "广州后天天气" - 查询广州后天的天气
  • "今天下雨吗?" - 查询所有者默认城市的今天天气(仅限所有者)

响应示例

普通用户查询:

用户: /天气 北京
Bot: 北京今天晴,气温 15~25℃,<3级,湿度 45%,空气质量良。

所有者查询(使用默认城市):

所有者: /天气
Bot: 今天晴,气温 15~25℃,<3级,湿度 45%,空气质量良。

高级功能

所有者城市功能(隐私保护)

Bot 所有者可以设置默认城市,在不说出城市名的情况下查询天气,保护隐私。

配置步骤:

  1. 在配置文件 weather.json 中设置 owner_city 为你的城市(如 "桂林")
  2. owner_id 中填写你的用户ID(QQ号如 "123456789",Telegram用户ID如 "123456789")
  3. 重启 KiraAI

使用示例:

  • 所有者在任意会话中说:"今天天气" → Bot 返回:"桂林今天晴,气温 15°C ~ 25°C,东南风 2 级,湿度 45%,空气质量良。"
  • 所有者在任意会话中说:"/天气" → Bot 返回:"桂林今天晴,气温 15°C ~ 25°C,东南风 2 级,湿度 45%,空气质量良。"

注意事项:

  • 只有 owner_id 对应的用户才能使用此功能
  • 其他用户必须指定城市名才能查询天气
  • 此功能保护所有者的位置隐私,避免在群聊中暴露城市
  • 所有者可以在任意会话(包括群聊和私聊)中使用此功能

清除缓存功能

Bot 所有者可以清除所有天气缓存数据,强制重新获取最新天气信息。

使用方法:

  • 所有者在任意会话中说:"/天气 清除缓存" → Bot 返回:"已清除 5 条天气缓存数据"
  • 所有者在任意会话中说:"/weather clear cache" → Bot 返回:"已清除 5 条天气缓存数据"

注意事项:

  • 只有 owner_id 对应的用户才能使用此功能
  • 其他用户尝试清除缓存会收到权限提示
  • 清除缓存后,下次查询天气时会重新从网络获取数据
  • 此功能适用于需要强制更新天气数据的场景
  • 所有者可以在任意会话(包括群聊和私聊)中使用此功能

权限控制

插件支持基于用户 ID 的权限控制,兼容多平台:

权限级别

  1. 普通用户

    • 可以查询天气(必须指定城市名)
    • 不能清除缓存
  2. 所有者(通过 owner_id 配置):

    • 可以查询天气(可以使用默认城市,不暴露城市名)
    • 可以清除缓存
    • 可以在任意会话中使用所有功能

平台兼容性

平台 用户ID类型 示例
QQ QQ号 2946204414
Telegram Telegram用户ID 123456789
其他 平台用户唯一标识 -

配置示例

{
  "owner_city": "桂林",
  "owner_id": "2946204414"
}

城市代码映射

插件内置了中国主要城市的代码映射,存储在 city_code.json 文件中。如果需要添加新的城市,可以编辑此文件。

格式:

{
  "城市名": "城市代码"
}

例如:

{
  "北京": "101010100",
  "上海": "101020100",
  "广州": "101280101"
}

数据存储

插件使用以下目录存储数据:

  • 缓存文件<KiraAI数据目录>/plugin_data/weather/weather_cache.json
  • 城市代码<插件目录>/city_code.json

法律声明

⚠️ 重要提示

此插件使用网络爬虫技术从中国天气网(www.weather.com.cn)获取天气信息。此爬虫方案仅供学习交流使用,稳定性与法律风险由使用者自行承担,与开发者无关。

使用本插件前,请确保:

  1. 遵守中国天气网的使用条款和服务协议
  2. 遵守相关法律法规
  3. 合理控制请求频率,避免对服务器造成过大压力
  4. 不得用于商业用途
  5. 不得侵犯网站的合法权益

故障排除

插件无法加载

  1. 检查依赖是否正确安装:pip install -r requirements.txt
  2. 检查配置文件格式是否正确
  3. 查看日志文件获取详细错误信息

天气查询失败

  1. 检查网络连接
  2. 检查城市名是否正确
  3. 检查城市代码映射文件是否存在
  4. 查看日志文件获取详细错误信息

缓存不生效

  1. 检查缓存文件路径是否正确
  2. 检查文件权限
  3. 尝试清除缓存后重新查询

权限验证失败

  1. 确认 owner_id 配置正确
  2. 确认用户ID格式正确(字符串格式)
  3. 检查日志中的权限验证信息

版本历史

v1.1.0 (2026-03-26)

  • 支持多平台用户ID权限控制(QQ、Telegram等)
  • 配置项 owner_qq 更名为 owner_id
  • 更新文档支持多平台说明

v1.0.5 (2026-03-19)

  • 迁移到 data/plugins 目录
  • 使用 get_data_path() 避免硬编码路径
  • 优化网络请求性能
  • 修复温度解析问题
  • 添加所有者城市功能(隐私保护)
  • 添加温度范围显示
  • 添加天气条件转换支持
  • 添加缓存清除功能
  • 改进权限控制为基于 QQ 号

v1.0.4

  • 优化温度解析逻辑
  • 改进天气条件提取
  • 修复日期处理问题

v1.0.3

  • 添加缓存机制
  • 优化网络请求
  • 改进错误处理

v1.0.2

  • 添加自然语言触发
  • 改进城市代码映射
  • 优化响应格式

v1.0.1

  • 初始版本
  • 基本天气查询功能

技术支持

如有问题或建议,请通过以下方式联系:

  • 提交 Issue
  • 查看 KiraAI 文档

许可证

本插件仅供学习交流使用,请遵守相关法律法规。

About

为KiraAI开发的一款天气查询插件,通过从 weather.com.cn 网站抓取数据,提供中国城市的天气信息。

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages