私、愛してる
kyomotoi / atri Goto Github PK
View Code? Open in Web Editor NEWA project for ATRI, use go-cqhttp and Nonebot2.
Home Page: https://atri.imki.moe
License: GNU General Public License v3.0
A project for ATRI, use go-cqhttp and Nonebot2.
Home Page: https://atri.imki.moe
License: GNU General Public License v3.0
描述你的大致想法 | Describe your idea
涩图嗅探功能对gif类型的图片识别误差明显偏大, 即使将阈值调整为80%也依然有大量误触发
描述你想要的解决方案 | Describe the solution you'd like
希望涩图嗅探去除对gif类型的支持或提供开关
扫码登陆显示环境不安全。扫码登陆pcTIM却可以成功。
在近日测试中发现:
一个或几个py文件中写有的if空置某command开启或关闭的功能,使其中一个启用或关闭后,其他的if会失效,不受控制,目前有待解决,如果有更好的方法欢迎继续提交issues,感谢!
是否有办法能够将服务控制应用于第三方插件?
{
"track_id": "rpsPw1hc",
"prompt": "Unknown ERROR->ConnectTimeout",
"time": "2022-06-08 19:42:49",
"content": "Traceback (most recent call last):\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpcore\backends\asyncio.py", line 101, in connect_tcp\n stream: anyio.abc.ByteStream = await anyio.connect_tcp(\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\anyio\_core\_sockets.py", line 218, in connect_tcp\n await event.wait()\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\anyio\_backends\_asyncio.py", line 662, in aexit\n raise exceptions[0]\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\anyio\_core\_sockets.py", line 164, in try_connect\n stream = await asynclib.connect_tcp(remote_host, remote_port, local_address)\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\anyio\_backends\_asyncio.py", line 1691, in connect_tcp\n await get_running_loop().create_connection(\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\asyncio\base_events.py", line 1041, in create_connection\n sock = await self._connect_sock(\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\asyncio\base_events.py", line 955, in _connect_sock\n await self.sock_connect(sock, address)\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\asyncio\proactor_events.py", line 702, in sock_connect\n return await self._proactor.connect(sock, address)\nasyncio.exceptions.CancelledError\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpcore\_exceptions.py", line 8, in map_exceptions\n yield\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpcore\backends\asyncio.py", line 101, in connect_tcp\n stream: anyio.abc.ByteStream = await anyio.connect_tcp(\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\anyio\_core\_tasks.py", line 118, in exit\n raise TimeoutError\nTimeoutError\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpx\_transports\default.py", line 60, in map_httpcore_exceptions\n yield\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpx\_transports\default.py", line 353, in handle_async_request\n resp = await self._pool.handle_async_request(req)\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpcore\_async\connection_pool.py", line 253, in handle_async_request\n raise exc\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpcore\_async\connection_pool.py", line 237, in handle_async_request\n response = await connection.handle_async_request(request)\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpcore\_async\connection.py", line 86, in handle_async_request\n raise exc\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpcore\_async\connection.py", line 63, in handle_async_request\n stream = await self._connect(request)\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpcore\_async\connection.py", line 111, in _connect\n stream = await self._network_backend.connect_tcp(**kwargs)\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpcore\backends\auto.py", line 23, in connect_tcp\n return await self._backend.connect_tcp(\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpcore\backends\asyncio.py", line 101, in connect_tcp\n stream: anyio.abc.ByteStream = await anyio.connect_tcp(\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\contextlib.py", line 137, in exit\n self.gen.throw(typ, value, traceback)\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpcore\_exceptions.py", line 12, in map_exceptions\n raise to_exc(exc)\nhttpcore.ConnectTimeout\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File "C:\Users\Administrator\Desktop\ATRI-main\ATRI\exceptions.py", line 98, in _track_error\n raise exception\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\nonebot\message.py", line 196, in _run_matcher\n await matcher.run(bot, event, state, stack, dependency_cache)\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\nonebot\internal\matcher.py", line 668, in run\n await self.simple_run(bot, event, state, stack, dependency_cache)\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\nonebot\internal\matcher.py", line 635, in simple_run\n await handler(\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\nonebot\dependencies\init.py", line 92, in call\n return await self.call(**values)\n File "C:\Users\Administrator\Desktop\ATRI-main\ATRI\plugins\kimo\init.py", line 22, in _chat\n repo = await Kimo().deal(msg, user_id)\n File "C:\Users\Administrator\Desktop\ATRI-main\ATRI\plugins\kimo\data_source.py", line 112, in deal\n data = await cls._load_data()\n File "C:\Users\Administrator\Desktop\ATRI-main\ATRI\plugins\kimo\data_source.py", line 50, in _load_data\n await cls._generate_data()\n File "C:\Users\Administrator\Desktop\ATRI-main\ATRI\plugins\kimo\data_source.py", line 37, in _generate_data\n data = await cls._request(KIMO_URL)\n File "C:\Users\Administrator\Desktop\ATRI-main\ATRI\plugins\kimo\data_source.py", line 27, in _request\n res = await request.get(url)\n File "C:\Users\Administrator\Desktop\ATRI-main\ATRI\utils\request.py", line 15, in get\n return await client.get(url, **kwargs)\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpx\_client.py", line 1729, in get\n return await self.request(\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpx\_client.py", line 1506, in request\n return await self.send(request, auth=auth, follow_redirects=follow_redirects)\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpx\_client.py", line 1593, in send\n response = await self._send_handling_auth(\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpx\_client.py", line 1621, in _send_handling_auth\n response = await self._send_handling_redirects(\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpx\_client.py", line 1658, in _send_handling_redirects\n response = await self._send_single_request(request)\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpx\_client.py", line 1695, in _send_single_request\n response = await transport.handle_async_request(request)\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpx\_transports\default.py", line 353, in handle_async_request\n resp = await self._pool.handle_async_request(req)\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\contextlib.py", line 137, in exit\n self.gen.throw(typ, value, traceback)\n File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\httpx\_transports\default.py", line 77, in map_httpcore_exceptions\n raise mapped_exc(message) from exc\nhttpx.ConnectTimeout\n"
}
兄弟,你这舆情部分看得我血压拉满,做舆情不上NLP,真的是太暴殄天物了,哪怕是接入openNLP平台呢?脑壳疼
经检查,是在判断功能关闭处出现问题
plugin_name_2 = "anime-setu"
key_LoliconAPI = config['api']['LoliconAPI']
setu_type = 1 # setu-type: 1(local), 2(url: https://api.lolicon.app/#/setu) default: 1(local)
setus = on_regex(
r"来[点丶张份副个幅][涩色瑟][图圖]|[涩色瑟][图圖]来|[涩色瑟][图圖][gkd|GKD|搞快点]|[gkd|GKD|搞快点][涩色瑟][图圖]",
rule=check_banlist() & check_switch(plugin_name_1))
应修改为
rule=check_banlist() & check_switch(plugin_name_2)
如题,因为 ATRI 实在是太可爱了,但我又有自己的 bot,所以我想将该项目的一部分插件为我自己所用。
故我将这些插件的文件夹加入到我自己的 bot 的 src/plugins
目录下,却发现无法正常使用。
我又在此基础上将您项目中的 ATRI
文件夹添加到了我 bot 的 根目录 与 src/plugins
目录下,虽然可以勉强运行,但仍存在许多问题,如“老婆”功能意外阻断了我原有的插件、“以图搜番”功能无法正常使用、“涩图嗅探”功能无法正常使用、enssial.py
内的功能无法正常调用等等。我查阅了文档,但没有相关的介绍。
我的 bot 项目为 NoNormalCreeper/Kori-Bot ,您可以在此处详细查看我的目录结构。
希望您能在百忙之中 牺牲打游戏的时间来帮助我
一下,非常感谢您的指导!
描述错误 | Describe the bug
之前装在本机上,今天刚换的docker版,
/app/ATRI/plugins/console/driver/init.py 有错误,看了下commit,是否和最近的更新有关?
如何复现 | To Reproduce
告诉我们该错误是如何触发的:
执行docker-compose up
后就这样了,docker-compose.yml 和 comfig.yml 已配置
操作环境 | Desktop:
最近事太多没来得及构思新的功能,现征集所有想法!
无论您是否会编程,都可以提出!(可能不会回复但会考虑)
格式:
如何关闭bot自带的go-cq模块
解决方案一: 预留空文件夹
方案二:修复这个Bug
在尝试使用setu.py模块时,遇到了无回复的问题。经检查Mirai的运行log,有形如
18:00:22 [ERROR] [CQHTTPMirai] java.io.IOException: Server returned HTTP response code: 403 for URL: https://XXX.jpg at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1900) ...
的报错。对比此issue中提到的现象,初步断定为该pixiv反代网站的反爬虫机制返回了403。
经过测试,对例如url = 'https://i.pixiv.cat/img-original/img/2017/08/20/21/44/35/64531410_p0.jpg'
的api返回url,替换为new_url = 'https://pixiv.cat/'+url.split('/')[-1].split('_')[0]+'.jpg'
可暂时性解决此问题。但本方法未补全图片分页信息,且随时有被反爬虫机制再次屏蔽的可能性。
描述问题 | Describe the question
参照配置本项目中提供内容配置后,运行报错。报错代码如下:
(atri-py3.8) :/data/data/com.termux/files/home/ATRI # python main.py
Traceback (most recent call last):
File "main.py", line 3, in <module>
import ATRI
File "/data/data/com.termux/files/home/ATRI/ATRI/__init__.py", line 13, in <module>
conf = __conf.parse()
File "/data/data/com.termux/files/home/ATRI/ATRI/configs/config.py", line 38, in parse
return ConfigModel.parse_obj(self.config)
File "/data/data/com.termux/files/home/.suroot/.cache/pypoetry/virtualenvs/atri-IWL-4cR8-py3.8/lib/python3.8/site-packages/pydantic/main.py", line 527, in parse_obj
return cls(**obj)
File "/data/data/com.termux/files/home/.suroot/.cache/pypoetry/virtualenvs/atri-IWL-4cR8-py3.8/lib/python3.8/site-packages/pydantic/main.py", line 342, in __init__
raise validation_error
pydantic.error_wrappers.ValidationError: 2 validation errors for ConfigModel
WithGoCQHTTP -> accounts -> 0 -> uin
value is not a valid integer (type=type_error.integer)
WithGoCQHTTP -> accounts -> 0 -> protocol
value is not a valid integer (type=type_error.integer)
百度了以后,说是文本格式的错误信息
,没有解决的头绪。
补充内容 | Additional context
报错相关的WithGoCQHTTP
配置填写如下(部分敏感内容做打码处理):
WithGoCQHTTP:
enabled: false
accounts:
- uin: {102****696}
password: "{password}"
protocol: {0}
download_domain: "{download_domain}"
download_version: "v1.0.0-rc4"
gocq_webui_username: "ATRI"
gocq_webui_password: "ATRI1314000***"
You Blog has been 404.
Please fix it.
I can't see the help doc.
经过个别群友上机测试
发现如下问题:
时间对比
出错业务逻辑部分未适配对应的功能开关检测
修复前,你可以选择:
Wiki里go-cqhttp的配置
servers
http
port:改为20001
ws-reverse
disabled:改为true
应该改为false而不是true吧
以及为什么 pip install -r requirements.txt时最后会出错
ATRI/ATRI/plugins/UploadSqlite.py
Line 45 in d97d94c
这些使用time.sleep
的地方应使用await asyncio.sleep
防止消息阻塞
描述错误 | Describe the bug
如何复现 | To Reproduce
https://atri.imki.moe/install/install-direct/
描述错误 | Describe the bug
请尽可能地使用简洁语言描述,以方便开发者快速定位重点.
您好我在执行docke-compose up时发生报错。
如何复现 | To Reproduce
告诉我们该错误是如何触发的:
错误预期行为 | Expected behavior
请尽可能地使用简洁语言描述,以方便开发者快速定位重点.
截图 | Screenshots
可以的话,请提供相关截图.
操作环境 | Desktop:
补充内容 | Additional context
你可以在此添加其它说明,或向我们提供你的解决方案.
nonebot | ATRI | 04-01 05:22:08 | INFO uvicorn >> Waiting for application startup.
nonebot | ATRI | 04-01 05:22:08 | ERROR uvicorn >> Traceback (most recent call last):
nonebot | File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 621, in lifespan
nonebot | async with self.lifespan_context(app):
nonebot | File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 518, in __aenter__
nonebot | await self._router.startup()
nonebot | File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 598, in startup
nonebot | await handler()
nonebot | File "/app/ATRI/utils/apscheduler.py", line 22, in _start_scheduler
nonebot | scheduler.start()
nonebot | File "/usr/local/lib/python3.9/site-packages/apscheduler/schedulers/asyncio.py", line 45, in start
nonebot | super(AsyncIOScheduler, self).start(paused)
nonebot | File "/usr/local/lib/python3.9/site-packages/apscheduler/schedulers/base.py", line 167, in start
nonebot | self._real_add_job(job, jobstore_alias, replace_existing)
nonebot | File "/usr/local/lib/python3.9/site-packages/apscheduler/schedulers/base.py", line 863, in _real_add_job
nonebot | replacements['next_run_time'] = job.trigger.get_next_fire_time(None, now)
nonebot | File "/usr/local/lib/python3.9/site-packages/apscheduler/triggers/combining.py", line 55, in get_next_fire_time
nonebot | fire_times = [trigger.get_next_fire_time(previous_fire_time, now)
nonebot | File "/usr/local/lib/python3.9/site-packages/apscheduler/triggers/combining.py", line 55, in <listcomp>
nonebot | fire_times = [trigger.get_next_fire_time(previous_fire_time, now)
nonebot | TypeError: get_next_fire_time() takes 2 positional arguments but 3 were given
nonebot |
nonebot | ATRI | 04-01 05:22:08 | ERROR uvicorn >> Application startup failed. Exiting.
nonebot exited with code 3
我注意到,使用全部全新代码的atri,将主启动的config中的Setu reverse_proxy设置为False 时,来点涩图功能依然生效,且会使用代理链接的形式发出,而且暂未发现无法发出的情况。
Setu:
reverse_proxy: False
描述你想要的解决方案 | Describe the solution you'd like
因此 ,我认为,当检测到图片无法发出(被腾讯屏蔽时),图片可尝试使用链接形式推送。
@的是红包发起人
目前已将 API 迁移出我个人的服务器并转用某些白嫖服务,因此我将限制放开了,不再需要 apikey 并且一次允许返回的数量增加了,但这也意味着可能存在一些来自服务商的隐性限制
e = "" def BAIDU_SECRET(): return e
如上 为什么传递变量需要定义函数
下面是无需定义函数即可在.py文件间传递的实例
JUHE_JOKE_API_KEY = '' # 笑话大全 JUHE_IDIOM_API_KEY = '' # 成语词典
switch.json似乎在switch.py后没变动撒。
目前通过文本编辑达到目的awa。
描述你的大致想法 | Describe your idea
我在使用termux作为终端,并且使用的是python3.8.15,这个无法安装poetry。是否可以使用相对来说更易安装的pipenv来构建独立的安装与运行环境呢?
描述你想要的解决方案 | Describe the solution you'd like
使用pipenv来构建独立的安装与运行环境,规避无法安装poetry的问题。
操作环境 | Android
补充内容 | Additional context
pipenv是基于pip的Python包管理工具,它和pip的用法非常相似,可以看作pip的加强版,它的出现解决了旧的pip+virtualenv+requirements.txt的工作方式的弊端。具体来说,它是pip、Pipfile和Virtualenv的结合体,它让包安装、包依赖管理和虚拟环境管理更加方便,使用它可以实现高效的Python项目开发工作流。
当然pipenv
也有一些自己存在的问题:
virtualenv的使用存在一定的问题:
由于跨平台的使用不太一致,有时候处理包之间的依赖总存在问题。
可能需要手动安装/删除某些特定版本的包
存在多个环境(开发环境、测试环境、生产环境)时,依赖包目录文件requirements.txt 会需要存在多个,无比繁琐
要定期更新 requirements.txt,保持项目环境的一致性
但是总归有另一种解决方案~
描述错误 | Describe the bug
ModuleNotFoundError: No module named 'nonebot_plugin_status'
如何复现 | To Reproduce
告诉我们该错误是如何触发的:
添加插件发送之后,我再用nonebot_plugin_status后发生错误,但返回是完成了,实际上并没有完成
错误预期行为 | Expected behavior
请尽可能地使用简洁语言描述,以方便开发者快速定位重点.
截图 | Screenshots
可以的话,请提供相关截图.
操作环境 | Desktop:
补充内容 | Additional context
你可以在此添加其它说明,或向我们提供你的解决方案.
20230713-15.log
20230713-16.log
ATRI/ATRI/plugins/UploadSqlite.py
Line 130 in d97d94c
如果用户上传的字段是经过精心构造的例如
'test);drop table cloudmusic;
你数据库就没了
我个人建议采用ORM或者使用占位符,不能直接采用字符串替换
以这句为例,应该为
cur.execute('INSERT INTO cloudmusic VALUES (?)',msg)
所以说,这机器人改怎么用,除了会冷不丁的冒出来跟我贴贴以为其他功能一个也用不了(苦恼)
截图.zip
描述问题 | Describe the question
RT,在解决了一大票的python包的问题后,我发现无法启动bot,是因为无法和其他同样使用nonebot框架的机器人一同使用吗?
补充内容 | Additional context
启动报错如下:
ATRI | 02-12 16:37:44 | ERROR uvicorn >> Traceback (most recent call last):
File "/data/data/com.termux/files/home/.suroot/.cache/pypoetry/virtualenvs/atri-IWL-4cR8-py3.8/lib/python3.8/site-packages/starlette/routing.py", line 671, in lifespan
async with self.lifespan_context(app):
File "/data/data/com.termux/files/home/.suroot/.cache/pypoetry/virtualenvs/atri-IWL-4cR8-py3.8/lib/python3.8/site-packages/starlette/routing.py", line 566, in __aenter__
await self._router.startup()
File "/data/data/com.termux/files/home/.suroot/.cache/pypoetry/virtualenvs/atri-IWL-4cR8-py3.8/lib/python3.8/site-packages/starlette/routing.py", line 650, in startup
handler()
File "/data/data/com.termux/files/home/ATRI/ATRI/plugins/console/driver/__init__.py", line 51, in init_driver
register_driver(driver()) # type: ignore
File "/data/data/com.termux/files/home/ATRI/ATRI/plugins/console/driver/__init__.py", line 19, in register_driver
app.add_middleware(
File "/data/data/com.termux/files/home/.suroot/.cache/pypoetry/virtualenvs/atri-IWL-4cR8-py3.8/lib/python3.8/site-packages/starlette/applications.py", line 135, in add_middleware
raise RuntimeError("Cannot add middleware after an application has started")
RuntimeError: Cannot add middleware after an application has started
如果仅想使用bot中的单一功能,请问如何提取使用呢?(在原生的nonebot2环境中
描述错误 | Describe the bug
B站订阅功能不显示UP主名字
如何复现 | To Reproduce
/bd.add(UID)
然后名字就Unknown了
花园猫这个号之前也订阅不出名字,但昨天删了重新订阅出来了
但另外两个就依然是Unknown
错误预期行为 | Expected behavior
理论上应该有名字?
操作环境 | Desktop:
补充内容 | Additional context
描述你的大致想法 | Describe your idea
希望能导入nonebot上的插件
描述你想要的解决方案 | Describe the solution you'd like
无
操作环境 | Desktop:
补充内容 | Additional context
你可以在此添加其它说明,或向我们提供你的解决方案.
疑似是因为我没有打开“使用内置gocqhttp”导致的参数问题
(把花括号去了然后装模做样输点数据就能跑了)
这算不算bug()
补充内容 | Additional context
你可以在此添加其它说明.
NoneBot Release v2.0.0-beta.1的适配什么时候有?
描述错误 | Describe the bug
使用/con.auth指令报错
呜——出错了...请反馈维护者
来自: 控制台
信息: UnkErr JSONDecodeError
追踪ID: f0eSV9Y7
如何复现 | To Reproduce
错误预期行为 | Expected behavior
请尽可能地使用简洁语言描述,以方便开发者快速定位重点.
补充内容 | Additional context
你可以在此添加其它说明,或向我们提供你的解决方案.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.