mirror of
https://github.com/zhayujie/chatgpt-on-wechat.git
synced 2026-06-03 02:27:09 +08:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8c48a27e1a | ||
|
|
4278d2b8ef | ||
|
|
3a3affd3ec | ||
|
|
9c208ffa2c | ||
|
|
bea4416f12 |
@@ -19,7 +19,10 @@ class WeChatMPMessage(ChatMessage):
|
||||
self.from_user_id = xmlData.find('FromUserName').text
|
||||
self.create_time = xmlData.find('CreateTime').text
|
||||
self.msg_type = xmlData.find('MsgType').text
|
||||
self.msg_id = xmlData.find('MsgId').text
|
||||
try:
|
||||
self.msg_id = xmlData.find('MsgId').text
|
||||
except:
|
||||
self.msg_id = self.from_user_id+self.create_time
|
||||
self.is_group = False
|
||||
|
||||
# reply to other_user_id
|
||||
@@ -36,7 +39,7 @@ class WeChatMPMessage(ChatMessage):
|
||||
self.pic_url = xmlData.find('PicUrl').text
|
||||
self.media_id = xmlData.find('MediaId').text
|
||||
elif self.msg_type == 'event':
|
||||
self.event = xmlData.find('Event').text
|
||||
self.content = xmlData.find('Event').text
|
||||
else: # video, shortvideo, location, link
|
||||
# not implemented
|
||||
pass
|
||||
@@ -150,7 +150,7 @@ class SubsribeAccountQuery():
|
||||
channel.query2[cache_key] = False
|
||||
channel.query3[cache_key] = False
|
||||
# Request again
|
||||
elif cache_key in channel.running:
|
||||
elif cache_key in channel.running and channel.query1.get(cache_key) == True and channel.query2.get(cache_key) == True and channel.query3.get(cache_key) == True:
|
||||
channel.query1[cache_key] = False #To improve waiting experience, this can be set to True.
|
||||
channel.query2[cache_key] = False #To improve waiting experience, this can be set to True.
|
||||
channel.query3[cache_key] = False
|
||||
@@ -231,7 +231,7 @@ class SubsribeAccountQuery():
|
||||
return replyPost
|
||||
|
||||
elif wechat_msg.msg_type == 'event':
|
||||
logger.info("[wechatmp] Event {} from {}".format(wechat_msg.Event, wechat_msg.from_user_id))
|
||||
logger.info("[wechatmp] Event {} from {}".format(wechat_msg.content, wechat_msg.from_user_id))
|
||||
trigger_prefix = conf().get('single_chat_prefix',[''])[0]
|
||||
content = textwrap.dedent(f"""\
|
||||
感谢您的关注!
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
|
||||
在本仓库中预置了一些插件,如果要安装其他仓库的插件,有两种方法。
|
||||
|
||||
- 第一种方法是在将下载的插件文件都解压到"plugins"文件夹的一个单独的文件夹,最终插件的代码都位于"plugins/PLUGIN_NAME/*"中。启动程序后,如果插件的目录结构正确,插件会自动被扫描加载。
|
||||
- 第一种方法是在将下载的插件文件都解压到"plugins"文件夹的一个单独的文件夹,最终插件的代码都位于"plugins/PLUGIN_NAME/*"中。启动程序后,如果插件的目录结构正确,插件会自动被扫描加载。除此以外,注意你还需要安装文件夹中`requirements.txt`中的依赖。
|
||||
|
||||
- 第二种方法是`Godcmd`插件,它是预置的管理员插件,能够让程序在运行时就能安装插件。
|
||||
- 第二种方法是`Godcmd`插件,它是预置的管理员插件,能够让程序在运行时就能安装插件,它能够自动安装依赖。
|
||||
|
||||
安装插件的命令是"#installp [仓库源](https://github.com/zhayujie/chatgpt-on-wechat/blob/master/plugins/source.json)记录的插件名/仓库地址"。这是管理员命令,认证方法在[这里](https://github.com/zhayujie/chatgpt-on-wechat/tree/master/plugins/godcmd)。
|
||||
|
||||
|
||||
@@ -104,6 +104,11 @@ ADMIN_COMMANDS = {
|
||||
"args": ["插件名"],
|
||||
"desc": "卸载指定插件",
|
||||
},
|
||||
"updatep": {
|
||||
"alias": ["updatep", "更新插件"],
|
||||
"args": ["插件名"],
|
||||
"desc": "更新指定插件",
|
||||
},
|
||||
"debug": {
|
||||
"alias": ["debug", "调试模式", "DEBUG"],
|
||||
"desc": "开启机器调试日志",
|
||||
@@ -336,6 +341,11 @@ class Godcmd(Plugin):
|
||||
ok, result = False, "请提供插件名"
|
||||
else:
|
||||
ok, result = PluginManager().uninstall_plugin(args[0])
|
||||
elif cmd == "updatep":
|
||||
if len(args) != 1:
|
||||
ok, result = False, "请提供插件名"
|
||||
else:
|
||||
ok, result = PluginManager().update_plugin(args[0])
|
||||
logger.debug("[Godcmd] admin command: %s by %s" % (cmd, user))
|
||||
else:
|
||||
ok, result = False, "需要管理员权限才能执行该指令"
|
||||
|
||||
@@ -243,6 +243,30 @@ class PluginManager:
|
||||
logger.error("Failed to install plugin, {}".format(e))
|
||||
return False, "安装插件失败,"+str(e)
|
||||
|
||||
def update_plugin(self, name:str):
|
||||
try:
|
||||
import common.package_manager as pkgmgr
|
||||
pkgmgr.check_dulwich()
|
||||
except Exception as e:
|
||||
logger.error("Failed to install plugin, {}".format(e))
|
||||
return False, "无法导入dulwich,更新插件失败"
|
||||
from dulwich import porcelain
|
||||
name = name.upper()
|
||||
if name not in self.plugins:
|
||||
return False, "插件不存在"
|
||||
if name in ["HELLO","GODCMD","ROLE","TOOL","BDUNIT","BANWORDS","FINISH","DUNGEON"]:
|
||||
return False, "预置插件无法更新,请更新主程序仓库"
|
||||
dirname = self.plugins[name].path
|
||||
try:
|
||||
porcelain.pull(dirname, "origin")
|
||||
if os.path.exists(os.path.join(dirname,"requirements.txt")):
|
||||
logger.info("detect requirements.txt,installing...")
|
||||
pkgmgr.install_requirements(os.path.join(dirname,"requirements.txt"))
|
||||
return True, "更新插件成功,请重新运行程序"
|
||||
except Exception as e:
|
||||
logger.error("Failed to update plugin, {}".format(e))
|
||||
return False, "更新插件失败,"+str(e)
|
||||
|
||||
def uninstall_plugin(self, name:str):
|
||||
name = name.upper()
|
||||
if name not in self.plugins:
|
||||
|
||||
Reference in New Issue
Block a user