nonebot-adapter-efchat


Namenonebot-adapter-efchat JSON
Version 0.1.8 PyPI version JSON
download
home_pageNone
SummaryA NoneBot adapter for EFChat
upload_time2025-08-04 14:31:03
maintainerNone
docs_urlNone
authormolanp
requires_python<4.0,>=3.9
licenseMIT
keywords bot efchat wtek
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <p align="center">
  <a href="https://nonebot.dev/"><img src="https://nonebot.dev/logo.png" width="200" height="200" alt="nonebot"></a>
</p>

<div align="center">

# NoneBot-Adapter-EFChat

_✨ NoneBot2 EFChat 协议适配 / EFChat Protocol Adapter for NoneBot2 ✨_

</div>

## EFChat适配器简述

EFChat Adapter 是一个适用于 **[EFChat聊天室](https://efchat.melon.fish)** 的 **NoneBot 适配器**,可以轻松地在 EFChat 聊天室中开发机器人,并使用 NoneBot 生态来构建聊天机器人。

> [!IMPORTANT]
>
> 为了避免造成不必要的麻烦,本适配器不会支持以下功能:
> 1. **其他有可能危害聊天室安全的功能**

---

## 🚀 特性
- 🔌 **NoneBot 适配**,可直接集成到 NoneBot 插件系统,实现灵活的机器人开发
- 📡 **自动处理 EFChat 事件**,支持房间消息、私聊、系统通知等
- ✨ **支持多Bot**, 支持同时运行并管理多个bot

---

## 📦 安装
```bash
pip install nonebot-adapter-efchat
```
---

## 🔧 配置
在 `bot.py` 中启用 EFChat 适配器:
```python
from nonebot import get_driver
from nonebot.adapters.efchat import Adapter

driver = get_driver()
driver.register_adapter(Adapter)
```

在 `.env` 文件中添加:
```ini
DRIVER=~websockets+~httpx

EFCHAT_BOTS = '
[
    {
        "nick": "EFChatBot",
        "password": "", // 可选配置
        "channel": "PublicR",
        "head": "https://efchat.melon.fish/imgs/ava.png", // 可选,为空使用默认头像
        "token": "",
        "ignore_self": true // 默认忽略自身消息
    }
]
'
```
* 配置项`token`是必填项;[获取TOKEN](get_token.md)
* 如果Bot将会拥有管理员权限,请提供`password`字段以确保账号安全
- `nick`是bot账号,同时也是在聊天室里显示的昵称
- `channel`是Bot活跃的房间名称
- `head`是Bot的头像url地址

> ⚠️ **暂不支持一个bot同时连接多个房间**

---

## [📖 API 参考](api.md)

---

## 💬 使用示例

### **消息回显**
在 `plugins/echo.py` 中创建一个简单的回显插件:
```python
from nonebot import on_message
from nonebot.adapters.efchat import MessageEvent

echo = on_message()

@echo.handle()
async def handle_echo(event: MessageEvent):
    await echo.send(f"你发送的消息是: {event.get_message()}")
```

机器人发送的消息默认不保存到聊天记录,如果需要保存,请在发送消息时传入`show=True`

例如
```py
await matcher.send("xxx", show=True)
```
---

## 🔨 开发与贡献
欢迎贡献代码!请遵循以下流程:
1. **Fork 本仓库** 并克隆代码。
2. **提交 Pull Request**,描述你的改动。

---

## 📜 许可证
本项目基于 **MIT 许可证** 开源,你可以自由使用和修改。

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "nonebot-adapter-efchat",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.9",
    "maintainer_email": null,
    "keywords": "bot, efchat, wtek",
    "author": "molanp",
    "author_email": "molanpp@outlook.com",
    "download_url": "https://files.pythonhosted.org/packages/34/bc/e48b345628eae36f09c529c1251ffb13eba509e54024caadac291de848e4/nonebot_adapter_efchat-0.1.8.tar.gz",
    "platform": null,
    "description": "<p align=\"center\">\n  <a href=\"https://nonebot.dev/\"><img src=\"https://nonebot.dev/logo.png\" width=\"200\" height=\"200\" alt=\"nonebot\"></a>\n</p>\n\n<div align=\"center\">\n\n# NoneBot-Adapter-EFChat\n\n_\u2728 NoneBot2 EFChat \u534f\u8bae\u9002\u914d / EFChat Protocol Adapter for NoneBot2 \u2728_\n\n</div>\n\n## EFChat\u9002\u914d\u5668\u7b80\u8ff0\n\nEFChat Adapter \u662f\u4e00\u4e2a\u9002\u7528\u4e8e **[EFChat\u804a\u5929\u5ba4](https://efchat.melon.fish)** \u7684 **NoneBot \u9002\u914d\u5668**\uff0c\u53ef\u4ee5\u8f7b\u677e\u5730\u5728 EFChat \u804a\u5929\u5ba4\u4e2d\u5f00\u53d1\u673a\u5668\u4eba\uff0c\u5e76\u4f7f\u7528 NoneBot \u751f\u6001\u6765\u6784\u5efa\u804a\u5929\u673a\u5668\u4eba\u3002\n\n> [!IMPORTANT]\n>\n> \u4e3a\u4e86\u907f\u514d\u9020\u6210\u4e0d\u5fc5\u8981\u7684\u9ebb\u70e6\uff0c\u672c\u9002\u914d\u5668\u4e0d\u4f1a\u652f\u6301\u4ee5\u4e0b\u529f\u80fd\uff1a\n> 1. **\u5176\u4ed6\u6709\u53ef\u80fd\u5371\u5bb3\u804a\u5929\u5ba4\u5b89\u5168\u7684\u529f\u80fd**\n\n---\n\n## \ud83d\ude80 \u7279\u6027\n- \ud83d\udd0c **NoneBot \u9002\u914d**\uff0c\u53ef\u76f4\u63a5\u96c6\u6210\u5230 NoneBot \u63d2\u4ef6\u7cfb\u7edf\uff0c\u5b9e\u73b0\u7075\u6d3b\u7684\u673a\u5668\u4eba\u5f00\u53d1\n- \ud83d\udce1 **\u81ea\u52a8\u5904\u7406 EFChat \u4e8b\u4ef6**\uff0c\u652f\u6301\u623f\u95f4\u6d88\u606f\u3001\u79c1\u804a\u3001\u7cfb\u7edf\u901a\u77e5\u7b49\n- \u2728 **\u652f\u6301\u591aBot**\uff0c \u652f\u6301\u540c\u65f6\u8fd0\u884c\u5e76\u7ba1\u7406\u591a\u4e2abot\n\n---\n\n## \ud83d\udce6 \u5b89\u88c5\n```bash\npip install nonebot-adapter-efchat\n```\n---\n\n## \ud83d\udd27 \u914d\u7f6e\n\u5728 `bot.py` \u4e2d\u542f\u7528 EFChat \u9002\u914d\u5668\uff1a\n```python\nfrom nonebot import get_driver\nfrom nonebot.adapters.efchat import Adapter\n\ndriver = get_driver()\ndriver.register_adapter(Adapter)\n```\n\n\u5728 `.env` \u6587\u4ef6\u4e2d\u6dfb\u52a0\uff1a\n```ini\nDRIVER=~websockets+~httpx\n\nEFCHAT_BOTS = '\n[\n    {\n        \"nick\": \"EFChatBot\",\n        \"password\": \"\", // \u53ef\u9009\u914d\u7f6e\n        \"channel\": \"PublicR\",\n        \"head\": \"https://efchat.melon.fish/imgs/ava.png\", // \u53ef\u9009\uff0c\u4e3a\u7a7a\u4f7f\u7528\u9ed8\u8ba4\u5934\u50cf\n        \"token\": \"\",\n        \"ignore_self\": true // \u9ed8\u8ba4\u5ffd\u7565\u81ea\u8eab\u6d88\u606f\n    }\n]\n'\n```\n* \u914d\u7f6e\u9879`token`\u662f\u5fc5\u586b\u9879;[\u83b7\u53d6TOKEN](get_token.md)\n* \u5982\u679cBot\u5c06\u4f1a\u62e5\u6709\u7ba1\u7406\u5458\u6743\u9650\uff0c\u8bf7\u63d0\u4f9b`password`\u5b57\u6bb5\u4ee5\u786e\u4fdd\u8d26\u53f7\u5b89\u5168\n- `nick`\u662fbot\u8d26\u53f7\uff0c\u540c\u65f6\u4e5f\u662f\u5728\u804a\u5929\u5ba4\u91cc\u663e\u793a\u7684\u6635\u79f0\n- `channel`\u662fBot\u6d3b\u8dc3\u7684\u623f\u95f4\u540d\u79f0\n- `head`\u662fBot\u7684\u5934\u50cfurl\u5730\u5740\n\n> \u26a0\ufe0f **\u6682\u4e0d\u652f\u6301\u4e00\u4e2abot\u540c\u65f6\u8fde\u63a5\u591a\u4e2a\u623f\u95f4**\n\n---\n\n## [\ud83d\udcd6 API \u53c2\u8003](api.md)\n\n---\n\n## \ud83d\udcac \u4f7f\u7528\u793a\u4f8b\n\n### **\u6d88\u606f\u56de\u663e**\n\u5728 `plugins/echo.py` \u4e2d\u521b\u5efa\u4e00\u4e2a\u7b80\u5355\u7684\u56de\u663e\u63d2\u4ef6\uff1a\n```python\nfrom nonebot import on_message\nfrom nonebot.adapters.efchat import MessageEvent\n\necho = on_message()\n\n@echo.handle()\nasync def handle_echo(event: MessageEvent):\n    await echo.send(f\"\u4f60\u53d1\u9001\u7684\u6d88\u606f\u662f: {event.get_message()}\")\n```\n\n\u673a\u5668\u4eba\u53d1\u9001\u7684\u6d88\u606f\u9ed8\u8ba4\u4e0d\u4fdd\u5b58\u5230\u804a\u5929\u8bb0\u5f55\uff0c\u5982\u679c\u9700\u8981\u4fdd\u5b58\uff0c\u8bf7\u5728\u53d1\u9001\u6d88\u606f\u65f6\u4f20\u5165`show=True`\n\n\u4f8b\u5982\n```py\nawait matcher.send(\"xxx\", show=True)\n```\n---\n\n## \ud83d\udd28 \u5f00\u53d1\u4e0e\u8d21\u732e\n\u6b22\u8fce\u8d21\u732e\u4ee3\u7801\uff01\u8bf7\u9075\u5faa\u4ee5\u4e0b\u6d41\u7a0b\uff1a\n1. **Fork \u672c\u4ed3\u5e93** \u5e76\u514b\u9686\u4ee3\u7801\u3002\n2. **\u63d0\u4ea4 Pull Request**\uff0c\u63cf\u8ff0\u4f60\u7684\u6539\u52a8\u3002\n\n---\n\n## \ud83d\udcdc \u8bb8\u53ef\u8bc1\n\u672c\u9879\u76ee\u57fa\u4e8e **MIT \u8bb8\u53ef\u8bc1** \u5f00\u6e90\uff0c\u4f60\u53ef\u4ee5\u81ea\u7531\u4f7f\u7528\u548c\u4fee\u6539\u3002\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A NoneBot adapter for EFChat",
    "version": "0.1.8",
    "project_urls": {
        "Homepage": "https://github.com/molanp/nonebot_adapter_efchat",
        "Repository": "https://github.com/molanp/nonebot_adapter_efchat"
    },
    "split_keywords": [
        "bot",
        " efchat",
        " wtek"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "68959c8af41c1ee2d29254bbf2e5f086cc61db3aa38d663144d6fc5262093d6e",
                "md5": "f5c414611874b391022a77a1d09d7378",
                "sha256": "dc05db46d640fdf15fab533d168274c1f16c4a8ac7c510ddb02d4033981134ee"
            },
            "downloads": -1,
            "filename": "nonebot_adapter_efchat-0.1.8-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f5c414611874b391022a77a1d09d7378",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.9",
            "size": 17511,
            "upload_time": "2025-08-04T14:31:02",
            "upload_time_iso_8601": "2025-08-04T14:31:02.835993Z",
            "url": "https://files.pythonhosted.org/packages/68/95/9c8af41c1ee2d29254bbf2e5f086cc61db3aa38d663144d6fc5262093d6e/nonebot_adapter_efchat-0.1.8-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "34bce48b345628eae36f09c529c1251ffb13eba509e54024caadac291de848e4",
                "md5": "eeb68679886eefd021bf87dbad79caaf",
                "sha256": "79912b8a9fe355102cb31ea4d4b05dd2660c08354d9d4ef0f4b769d0915e4ea9"
            },
            "downloads": -1,
            "filename": "nonebot_adapter_efchat-0.1.8.tar.gz",
            "has_sig": false,
            "md5_digest": "eeb68679886eefd021bf87dbad79caaf",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.9",
            "size": 14788,
            "upload_time": "2025-08-04T14:31:03",
            "upload_time_iso_8601": "2025-08-04T14:31:03.966897Z",
            "url": "https://files.pythonhosted.org/packages/34/bc/e48b345628eae36f09c529c1251ffb13eba509e54024caadac291de848e4/nonebot_adapter_efchat-0.1.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-04 14:31:03",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "molanp",
    "github_project": "nonebot_adapter_efchat",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "nonebot-adapter-efchat"
}
        
Elapsed time: 1.14308s