Python相对引用详解
起因
受害者视角
假设有这样一个项目结构: 12345project/├── main.py└── sub/ ├── __init__.py └── sub.py
在main.py中,我们希望导入sub模块,并调用sub模块中的函数。我们可能会尝试以下代码:
12import sub.subsub.sub.func() 这样是没问题的,
然而如果我们想要把这个项目移到另一个项目中呢?
项目结构变成了这样 1234567project_NB/├── main1.py└── project ├── main.py └── sub/ ├── __init__.py └── sub.py
在main1.py中,我们希望导入project模块中的main.py,并调用sub模块中的函数。我们可能会尝试以下代码:
12from sub.main import funcfunc() # 寄.
问题出在了哪儿?
在修改前后分别加上print(os.getcwd()),
发现原来先前工作目录和命令行的环境目录相同,
因此导 ...
SyncToAsync
方法实现
123456789101112131415161718192021222324# utils/decorators.pyfrom typing import Callable, TypeVarfrom typing_extensions import ParamSpecfrom collections.abc import Coroutinefrom functools import partialimport asyncioP = ParamSpec("P")R = TypeVar("R")def run_sync(call: Callable[P, R]) -> Callable[P, Coroutine[None, None, R]]: """一个用于包装 sync function 为 async function 的装饰器 参数: call: 被装饰的同步函数 """ @wraps(call) ...
系统功能更新
数据库线程安全
在Week2中, 已经实现了数据库的增删改查, 但是在多线程环境下,
需要保证数据库的线程安全,
防止多个线程同时操作数据库导致数据不一致的问题. 否则会报错:
sqlite3.OperationalError: database is locked
MessageDB
使用lock对数据库操作进行加锁, 保证数据库操作的线程安全
1234567891011121314151617181920212223async def save_message(self, msg: WxMsg, self_wxid) -> bool: """异步保存消息到数据库""" async with self._lock: async with self._async_session_factory() as session: try: message = Message( msg_id=msg.i ...
在下文中, LWB代表 LegendWechatBot, LBW同理
命令处理规范
在LBW的前身作品中, 我曾经尝试过使用NLP技术来处理用户的指令,
效果却不尽人意. 原因是NLP在处理中文指令时, 效果并不理想,
同时还会遇到各种意想不到的语法或者逻辑问题. 因此, 在LBW中,
我决定采用一种更为简单直接的方法来处理用户的指令,
即使用命令处理规范.
指令格式
在LBW插件中, 有两种指令格式, 分别是简略版和详细版.
其中简略版是每个插件都需要具备的, 而详细版则是供要求参数较复杂,
对于返回结果要求更高, 更精细化的用户使用
简略版
该格式受到Python函数调用格式启发
简略版指令格式如下: 1插件别名 指令参数1 指令参数2 ... 指令参数n
其中插件别名是写在main.py的__init__定义的cmd变量中的,
每个插件别名数量需<=1
调用简略版指令需要私聊或@
例如: 1@bot 天气 查询 上海 今天
详细版
详细版指令受命令行命令格式启发
详细版指令格式如下: 1/指令 -参数1 参数值1 ... -参数n 参数值n 例如: 1/we ...
项目灵感
本项目深受官方Q群机器人以及微信机器人的启发, 但不满足于现有的功能,
因此决定自己动手写一个微信机器人, 以实现更多功能
项目总目标
实现一个微信机器人,
能够实现以下功能:
接收并处理
展开查看
文本消息
系统消息
群聊新成员加入消息
好友验证消息
红包消息
转账消息
<li>图片消息
<li>语音消息
<li>视频消息
<li>文件消息
<li>位置消息
<li>群聊at消息
<li>私聊消息
<li>违禁消息
</ul>
发送
展开查看
文本消息
图片消息
语音消息
视频消息
文件消息
链接消息
群聊at消息
私聊消息
系统
展开查看
群管理系统
积分系统
违禁词管理系统
定时任务系统
插件系统
日志系统
数据统计系统
速率限制系统
热更新系统
GUI系统
项目基础
编 ...
博客快捷键
shift K
关闭快捷键功能
shift A
打开/关闭中控台
shift M
播放/暂停音乐
shift D
深色/浅色显示模式
shift S
站内搜索
shift R
随机访问
shift H
返回首页
shift F
友链鱼塘
shift L
友链页面
shift P
关于本站
shift I
原版/本站右键菜单
数据库加载中
通知
你好呀

