Amer 机器人介绍

Amer 是一款由个人开发者创建的跨平台智能聊天与消息同步机器人,旨在为 QQ 群和云湖群提供无缝的消息同步、基础管理功能以及智能化辅助服务。通过 Amer,用户可以在不同平台之间轻松实现消息互通,同时享受高效的群聊管理体验。


功能概述

1. 消息同步

Amer 支持在 QQ 和云湖群之间进行双向或单向消息同步。无论是文字消息、图片,还是其他多媒体内容,都可以在绑定的群聊中实时同步。

2. 跨平台管理

Amer 提供了丰富的指令集,方便管理员对绑定关系、同步模式等进行灵活管理。

3. AI 智能辅助(QQ 平台专属)

在 QQ 平台中,Amer 提供了基础的 AI 辅助功能,支持自定义关键词触发回复,并可配置提示词以优化对话效果。


QQ 平台相关指令

以下是在 QQ 群中可以使用的指令:

  • /帮助
    查看所有可用指令列表及详细说明。

  • /同步群组管理

    • /同步群组管理 绑定 yh <id>:将当前 QQ 群与指定的云湖群绑定。
    • /同步群组管理 解绑 yh <id>:解除与指定云湖群的绑定。
    • /同步群组管理 列表:查看当前绑定的云湖群列表及其同步模式。
  • /ai配置

    • /ai配置 清除记忆:清除当前群的对话记录。
    • /ai配置 查看记忆:查看最近的对话摘要。
    • /ai配置 关键词 <添加/删除/清空/列表>:管理触发 AI 的关键词。
    • /ai配置 提示词 <设置/清除/查看>:设置或查看系统提示词。
  • /ai开关 [开/关]
    控制 AI 核心的运行状态。


云湖平台相关指令

以下是在云湖群中可以使用的指令:

  • /帮助
    查看所有可用指令列表及详细说明。

  • /群列表
    查看当前绑定的 QQ 群列表及其同步模式。

  • /绑定
    将当前云湖群与指定的 QQ 群绑定。

  • /解绑
    解除与指定 QQ 群的绑定。

  • /同步模式
    设置消息同步模式:

    • 全同步:双向同步消息。
    • QQ到云湖:仅从 QQ 同步到云湖。
    • 云湖到QQ:仅从云湖同步到 QQ。
    • 停止:停止消息同步。

技术细节与实现亮点

1. Redis 高效缓存

Amer 使用 Redis 存储绑定关系、消息队列、敏感词汇记录等数据,显著提升了系统的响应速度和并发处理能力。例如:

  • 消息同步时,Redis 的 rpushlrange 方法用于高效存储和检索消息。
  • 敏感词汇检测结果被存储在独立的 Redis 列表中,便于后续审查和统计。

以下是消息存储的核心代码片段:

def store_message(key, message):
    redis_client.rpush(key, json.dumps(message))
    logger.info(f"Message stored in Redis: {key} -> {message}")

2. SQLite 数据库管理

Amer 使用 SQLite 数据库存储绑定关系的持久化数据。通过 BindingManager 模块,实现了对绑定信息的增删改查操作。例如:

  • 在绑定新群时,Amer 会更新 SQLite 表中的 YH_group_idsQQ_group_ids 字段。
  • 解绑操作会同时清理 Redis 缓存和 SQLite 数据库中的相关记录。

以下是绑定操作的核心代码片段:

def bind(platform_A, platform_B, id_A, id_B):
    try:
        if platform_A == "QQ":
            result = update_QQ_table("add", "YH", id_A, id_B)
        elif platform_A == "YH":
            result = update_YH_table("add", "QQ", id_A, id_B)
        return result
    except Exception as e:
        logger.error(f"Binding failed: {e}")
        return {"status": -1, "msg": "Binding failed"}

3. 屏蔽词过滤机制

Amer 内置了一套完善的屏蔽词过滤机制,能够自动替换敏感词汇并记录相关信息。具体实现如下:

  • 屏蔽词分为多个类别(如政治、宗教、广告等),支持动态扩展。
  • 替换逻辑通过 replace_blocked_words 函数实现,确保敏感内容不会泄露。

以下是屏蔽词替换的核心代码片段:

def replace_blocked_words(message: str) -> str:
    replaced_words = []
    for category, words in blocked_words.items():
        for word in words:
            if word in message:
                message = message.replace(word, '*' * len(word))
                replaced_words.append((word, category))
    if replaced_words:
        logger.info(f"Blocked words replaced: {replaced_words}")
    return message

我们的优势

1. 高性能架构

Amer 使用 异步 + Redis 进行数据存储和缓存。

2. 灵活的同步模式

支持双向、单向以及完全停止的消息同步模式,满足不同场景下的需求。

3. 多平台兼容

Amer 完美适配 QQ 和云湖两大主流社交平台,为用户提供一致的体验。

4. 可扩展性

模块化的代码结构使得 Amer 易于扩展新功能,例如未来可以增加更多平台的支持或增强现有功能。


开源贡献

Amer 是一个开源项目,我们欢迎社区开发者为 Amer 提供贡献!无论是修复 Bug、新增功能,还是优化性能,您的每一份贡献都将帮助 Amer 变得更好。

如果您有兴趣参与开发,请访问我们的 GitHub 仓库 获取最新代码,并阅读贡献指南。我们也非常欢迎您提交 Issue 或 Pull Request!


免责声明与隐私声明

免责声明

  • Amer 机器人由个人开发者维护,仅用于合法用途。用户需自行承担因使用本机器人而产生的任何后果。我们不对因网络延迟、技术故障或其他不可抗力因素导致的服务中断负责。

隐私声明

  • Amer 会记录必要的日志信息(如消息时间戳、发送者 ID 等),以便提供更好的服务。
  • 我们承诺不会将用户的个人信息或聊天记录用于非法用途,也不会将其出售给第三方。
  • 敏感词汇会被自动屏蔽并记录,但这些记录仅用于安全审查,不会对外公开。

关于备案的声明

  • Amer 严格遵守国内相关法律法规,并已按照要求完成网站备案。作为个人开发者,我们深知备案的重要性,并对此表示充分尊重。