Greasy Fork

来自缓存

Greasy Fork is available in English.

Linux.do 大召唤师

进行一个呼朋唤友~

作者
Maple_oWo
日安装量
0
总安装量
0
评分
0 0 0
版本
2.0.0
创建于
2025-11-04
更新于
2025-11-04
大小
59.7 KB
许可证
MIT
适用于

✨ Linux.do 大召唤师

一个为 Linux.do 论坛设计的油猴脚本,支持批量@好友的智能召唤功能

GitHub

点击上方按钮即可安装脚本到 Tampermonkey 或其他用户脚本管理器。

1. 安装油猴插件

首先需要安装浏览器扩展(任选其一):

2. 安装脚本

  1. 复制 iamthesummoner.js 的全部内容
  2. 打开油猴管理面板
  3. 点击"添加新脚本"
  4. 粘贴代码并保存

5. 刷新 Linux.do 论坛页面

🎯 核心功能

1. 📋 完整的分组管理

  • 添加分组:创建任意数量的好友分组
  • 编辑分组:直接修改分组名称
  • 删除分组:移除不需要的分组
  • 启用/禁用:通过开关控制分组状态

2. 👥 灵活的成员管理

  • 手动添加:在配置面板中输入用户名添加成员
  • 快速添加:直接从用户卡片添加到分组
  • 批量管理:在每个分组中自由添加/删除成员
  • 一键移除:点击 × 快速移除成员

3. ⚡ 便捷的召唤操作

  • 长按召唤:长按左下角 ✨ 按钮(0.5秒)打开召唤菜单
  • 选择分组:从菜单中选择要召唤的分组
  • 自动插入:@所有成员自动插入到编辑器光标位置
  • 智能检测:自动检测编辑器焦点状态

4. 🎨 精美的界面设计

  • iOS 18 风格:遵循苹果设计准则
  • 毛玻璃效果:现代化的视觉体验
  • 流畅动画:精心设计的过渡效果
  • 响应式布局:适配各种屏幕尺寸

🎮 使用指南

基本操作

1. 打开配置面板

  • 单击左下角的 ✨ 浮动按钮
  • 进入分组和成员管理界面

2. 管理分组

添加新分组:

  1. 在配置面板底部点击"➕ 添加新分组"
  2. 输入分组名称
  3. 点击确定

编辑分组名:

  1. 点击分组右侧的 ✏️ 按钮
  2. 修改名称后再次点击 ✏️ 保存

删除分组:

  1. 点击分组右侧的 🗑️ 按钮
  2. 确认删除

启用/禁用分组:

  • 点击分组右侧的开关按钮

3. 管理成员

方法一:配置面板添加

  1. 在分组中点击"+ 添加成员"
  2. 输入 Linux.do 的用户名(不含@)
  3. 点击"确定"

方法二:用户卡片快速添加

  1. 鼠标悬停到任意用户头像
  2. 在弹出的用户卡片中点击"✨ 加入分组"
  3. 选择要添加到的分组(可多选)
  4. 自动保存

移除成员:

  • 在配置面板中点击成员标签右侧的 × 按钮

4. 召唤好友

长按召唤:

  1. 先点击进入编辑器(让光标闪烁)
  2. 长按左下角的 ✨ 按钮(约0.5秒)
  3. 在弹出的菜单中选择分组
  4. @所有成员自动插入到光标位置

注意事项:

  • 必须先聚焦编辑器才能使用召唤功能
  • 只有启用的分组会显示在召唤菜单中
  • 空分组不会显示

5. 保存配置

  • 完成所有设置后,点击"保存"按钮
  • 配置会自动保存到本地
  • 从用户卡片添加成员时会自动保存

🎨 界面说明

左下角浮动按钮 ✨

  • 位置:页面左下角固定
  • 单击:打开配置面板
  • 长按:打开召唤菜单(需先聚焦编辑器)
  • 颜色变化:长按时变为橙色

配置面板

  • 标题栏:显示标题和关闭按钮
  • 分组列表:展示所有分组和成员
  • 添加按钮:虚线框按钮,用于添加新分组
  • 底部操作栏:重置和保存按钮

用户卡片按钮

  • 位置:用户卡片底部控制区域
  • 样式:蓝色按钮,显示"✨ 加入分组"
  • 功能:快速添加用户到分组

召唤菜单

  • 位置:浮动按钮上方
  • 内容:显示所有可用分组及成员数量
  • 操作:点击分组名称即可召唤

💡 使用技巧

1. 高效管理分组

  • 按功能分组(如"开发组"、"设计组")
  • 按项目分组(如"项目A成员"、"项目B成员")
  • 按关系分组(如"好友"、"同事")

2. 快速添加成员

  • 浏览论坛时随时添加感兴趣的用户
  • 利用用户卡片的快速添加功能
  • 一个用户可以加入多个分组

3. 召唤最佳实践

  • 先点击编辑器确保光标在正确位置
  • 长按浮动按钮时保持按住
  • 选择分组后@会自动插入

4. 配置备份

  • 配置保存在浏览器本地存储
  • 重装脚本后配置会保留
  • 可以通过"重置"恢复默认配置

🏗️ 技术架构

三层架构设计

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   UI Layer      │    │  Business Logic  │    │  Data Layer     │
│                 │    │                  │    │                 │
│ • 配置面板      │◄──►│ • @用户生成器    │◄──►│ • ConfigManager │
│ • 召唤菜单      │    │ • 事件处理       │    │ • GM_setValue   │
│ • 用户卡片按钮  │    │ • 卡片注入       │    │ • 数据验证      │
└─────────────────┘    └──────────────────┘    └─────────────────┘

核心类

ConfigManager

  • 配置加载和保存
  • 数据验证
  • 持久化存储

MentionGenerator

  • 生成@用户列表
  • 格式化输出

UIManager

  • 界面创建和渲染
  • 事件绑定
  • 用户交互处理

SummonerApp

  • 应用初始化
  • 用户卡片监听
  • 配置协调

🔧 技术特性

关键技术点

  1. MutationObserver

    • 监听用户卡片动态加载
    • 自动注入按钮到新卡片
  2. 长按检测

    • 500ms 定时器实现
    • 支持鼠标和触摸事件
  3. 光标位置插入

    • 保留用户选择区域
    • 自动触发输入事件
  4. GM API 存储

    • GM_setValue/GM_getValue
    • 跨域数据持久化
  5. iOS 18 设计

    • CSS 变量系统
    • 毛玻璃效果
    • 流畅动画

兼容性

  • ✅ Discourse 论坛平台
  • ✅ Chrome/Edge/Firefox/Safari
  • ✅ Tampermonkey/Violentmonkey
  • ✅ 桌面端和移动端

📝 编程原则

本项目严格遵循以下最佳实践:

SOLID 原则

  • S:单一职责,每个类职责明确
  • O:开闭原则,易于扩展新功能
  • L:里氏替换,子类可替换父类
  • I:接口隔离,接口专一
  • D:依赖倒置,依赖抽象

其他原则

  • KISS:简洁的 API 设计
  • DRY:避免重复代码
  • YAGNI:仅实现必要功能

🐛 常见问题

Q: 长按无反应?

A: 请确保:

  1. 按住时间达到 0.5 秒
  2. 鼠标保持在按钮上
  3. 编辑器已获得焦点(光标在闪烁)

Q: 召唤菜单显示"暂无可用分组"?

A: 可能原因:

  1. 所有分组都被禁用了(检查开关)
  2. 所有分组都是空的(添加成员)
  3. 配置未保存(点击保存按钮)

Q: 用户卡片上没有按钮?

A: 尝试:

  1. 刷新页面
  2. 检查脚本是否启用
  3. 查看控制台是否有错误

Q: 配置丢失了?

A: 配置存储在浏览器本地,可能因为:

  1. 清除了浏览器数据
  2. 使用了无痕模式
  3. 切换了浏览器

Q: @的格式不对?

A: 确保:

  1. 输入的是正确的用户名
  2. 用户名不包含特殊字符
  3. 用户名不含 @ 符号

🆕 v2.0 更新内容

新增功能

✅ 完整的分组管理(添加/编辑/删除) ✅ 完整的成员管理(手动添加/卡片添加/移除) ✅ 长按召唤菜单(替代快捷键) ✅ 用户卡片快速添加按钮 ✅ 分组选择弹窗 ✅ 浮动按钮位置改为左下角

移除功能

❌ 双击空格快捷键 ❌ 命令解析器 ❌ KeyboardHandler 类

优化改进

🎨 更大的配置面板(700px) 🎨 更完善的编辑功能 🎨 更友好的交互提示 🎨 更流畅的动画效果

📄 开源协议

本项目采用 MIT 协议开源。

🙏 致谢

  • 感谢 Linux.do 社区
  • 感谢 Discourse 论坛平台
  • 感谢 Tampermonkey 团队

📧 反馈

如有问题或建议,欢迎通过以下方式反馈:

  • 在 Linux.do 论坛发帖
  • 提交 Issue
  • 贡献代码

Enjoy summoning! ✨