# hermes
Hermes is an extensible XMPP-based chatroom server written in Python.
Easily setup and manage chatrooms for friends or colleagues.
## How it Works
Supply your own XMPP-based accounts (Google accounts work great!) to serve as chatroom hosts, add a bit of configuration, and that's it.
All chatroom members are invited to chat with the chatroom host which will in turn broadcast their messages to all other members.
## Usage
The "Hello World" usage of Hermes looks like this. Put the following in `chatserver.py`, update the user and chatroom info, and run it:
from hermes.api import run_server
brain = { 'JID': '[email protected]', 'NICK': 'brain', 'ADMIN': True }
pinky = { 'JID': '[email protected]', 'NICK': 'pinky' }
chatrooms = {
'world-domination-planning': {
'JID': '[email protected]',
'PASSWORD': 'thesamethingwedoeverynight',
'SERVER': ('talk.google.com', 5223,),
'MEMBERS': [pinky, brain],
},
}
run_server(chatrooms)
## Installation
Available from PyPI: <http://pypi.python.org/pypi/hermes/>. pip is the recommended installation method:
pip install hermes
## Commands
Hermes interprets some messages as commands:
* `/mute` - Mute the chatroom. Messages are queued up for whenever you unmute the chatroom.
* `/unmute` - Unmute the chatroom. Receive all messages that were queued while the chatroom was muted.
* `/invite <handle>` - Invite members to the chatroom. Available to admins only.
* `/kick <handle>` - Kick members from the chatroom. Available to admins only.
* `/marco` - Not sure if you're still connected to the chatroom? Chatroom replies to you (and only you) with "polo".
## Extensibility
You can extend the base chatroom class `hermes.Chatroom` to modify or add extra functionality.
Adding a `command_patterns` static property to your class should be particularly useful for extensions.
It's a list of regular expression/method name pairs. Each incoming message is tested against the regexes until a match is found.
On a match, the named instance method is invoked to handle the message instead of the default message-handling pipeline.
Specify the path to your creation as a string or the Class itself as the `CLASS` of your chatroom:
from hermes.api import run_server, Chatroom
class BillyMaysChatroom(Chatroom):
command_patterns = ((r'.*', 'shout'),)
def shout(self, sender, body, match):
body = body.upper() #SHOUT IT
self.broadcast(body)
chatrooms = {
'world-domination-planning': {
'CLASS': 'BillyMaysChatroom',
'JID': '[email protected]',
'PASSWORD': 'thesamethingwedoeverynight',
'SERVER': ('talk.google.com', 5223,),
'MEMBERS': [pinky, brain],
},
}
run_server(chatrooms)
## Upcoming Features
* **Persistence**: Allow chatroom configuration/state/history to be persisted
## Is it any good?
Yes.
Elaborate, you say? Hermes has been successfully used "in production" to run several chatrooms for the Crocodoc team since the first commit. It's good to have guinea pigs.
## License
Hermes is an ISC licensed library. See LICENSE for more details. If you insist on compensating me, I'd let you buy me a beer. Or just donate money to a good cause...that'd probably be best.
## Can I Contribute?
Yes, please do. Pull requests are great. I'll totally add a CONTRIBUTORS.txt when Hermes gets its first contributor.
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
共17个文件
py:6个
txt:4个
pkg-info:2个
资源分类:Python库 所属语言:Python 资源全名:hermes-0.3.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源推荐
资源详情
资源评论
收起资源包目录
hermes-0.3.0.tar.gz (17个子文件)
hermes-0.3.0
MANIFEST.in 106B
PKG-INFO 815B
hermes
server.py 3KB
chatroom.py 10KB
__init__.py 501B
log.py 673B
api.py 74B
hermes.egg-info
PKG-INFO 815B
requires.txt 16B
not-zip-safe 1B
SOURCES.txt 302B
top_level.txt 7B
dependency_links.txt 1B
setup.cfg 59B
setup.py 1KB
.gitignore 50B
README.md 3KB
共 17 条
- 1
资源评论
- Honey39992023-04-05总算找到了想要的资源,搞定遇到的大问题,赞赞赞!
挣扎的蓝藻
- 粉丝: 13w+
- 资源: 15万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功