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 的
rpush
和lrange
方法用于高效存储和检索消息。 - 敏感词汇检测结果被存储在独立的 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_ids
或QQ_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 严格遵守国内相关法律法规,并已按照要求完成网站备案。作为个人开发者,我们深知备案的重要性,并对此表示充分尊重。