Giter VIP home page Giter VIP logo

nonebot-plugin-picmcstat's People

Contributors

github-actions[bot] avatar lgc2333 avatar xiexilin2 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

nonebot-plugin-picmcstat's Issues

响应报错

06-05 21:21:02 [ERROR] nonebot | Running Matcher(type='message', module=nonebot_plugin_picmcstat.__main__) failed.
Traceback (most recent call last):
  File "E:\IDEAyes\BOT\nonebot2\bot.py", line 59, in <module>
    nonebot.run(app="__mp_main__:app")
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot\__init__.py", line 309, in run
    get_driver().run(*args, **kwargs)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot\drivers\fastapi.py", line 198, in run
    uvicorn.run(
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\uvicorn\main.py", line 569, in run
    server.run()
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\uvicorn\server.py", line 60, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 633, in run_until_complete
    self.run_forever()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\windows_events.py", line 321, in run_forever
    super().run_forever()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 600, in run_forever
    self._run_once()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 1896, in _run_once
    handle._run()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot\message.py", line 141, in _check_matcher
    await _run_matcher(Matcher, bot, event, state, stack, dependency_cache)
> File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot\message.py", line 187, in _run_matcher
    await matcher.run(bot, event, state, stack, dependency_cache)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot\internal\matcher\matcher.py", line 753, in run
    await self.simple_run(bot, event, state, stack, dependency_cache)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot\internal\matcher\matcher.py", line 728, in simple_run
    await handler(
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot\dependencies\__init__.py", line 108, in __call__
    return await cast(Callable[..., Awaitable[R]], self.call)(**values)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot_plugin_picmcstat\__main__.py", line 28, in _
    await matcher.finish(await draw(arg, svr_type))
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot\internal\matcher\matcher.py", line 481, in finish
    await cls.send(message, **kwargs)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot\internal\matcher\matcher.py", line 466, in send
    return await bot.send(event=event, message=_message, **kwargs)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot_plugin_guild_patch\__init__.py", line 30, in patched_send
    return await original_send(self, event, message, **kwargs)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot\adapters\onebot\v11\bot.py", line 220, in send
    return await self.__class__.send_handler(self, event, message, **kwargs)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot\adapters\onebot\v11\bot.py", line 174, in send
    return await bot.send_msg(**params)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot\internal\adapter\bot.py", line 120, in call_api
    raise exception
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot\internal\adapter\bot.py", line 98, in call_api
    result = await self.adapter._call_api(self, api, **data)
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot\adapters\onebot\v11\adapter.py", line 140, in _call_api
    return handle_api_result(await self._result_store.fetch(seq, timeout))
  File "E:\IDEAyes\BOT\nonebot2\venv\lib\site-packages\nonebot\adapters\onebot\v11\utils.py", line 58, in handle_api_result
    raise ActionFailed(**result)
nonebot.adapters.onebot.v11.exception.ActionFailed: ActionFailed(data=None, echo='1', message='send group message failed: blocked by server', msg='SEND_MSG_API_ERROR', retcode=100, status='failed', wording='send group message failed: blocked by server')

快捷指令指定群聊触发

一个bot加了不同的服务器群,能不能让不同的群聊进行不同的查询,但触发快捷指令的关键词一致。感谢

获取服务器状态/画服务器状态图出错

08-07 12:01:09 [SUCCESS] nonebot | OneBot V11 1093055754 | [message.private.friend]: Message 30491 from 2066099262 '查服'
08-07 12:01:09 [INFO] nonebot | Event will be handled by Matcher(type='message', module=nonebot_plugin_picmcstat.__main__)
08-07 12:01:09 [ERROR] nonebot_plugin_picmcstat | 获取服务器状态/画服务器状态图出错
Traceback (most recent call last):
  File "<string>", line 15, in <module>
  File "D:\Nonebot2\KuriKana-Nonebot2\.venv\Lib\site-packages\nonebot\__init__.py", line 333, in run
    get_driver().run(*args, **kwargs)
  File "D:\Nonebot2\KuriKana-Nonebot2\.venv\Lib\site-packages\nonebot\drivers\fastapi.py", line 199, in run
    uvicorn.run(
  File "D:\Nonebot2\KuriKana-Nonebot2\.venv\Lib\site-packages\uvicorn\main.py", line 587, in run
    server.run()
  File "D:\Nonebot2\KuriKana-Nonebot2\.venv\Lib\site-packages\uvicorn\server.py", line 61, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "C:\Users\28305\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py", line 190, in run
    return runner.run(main)
  File "C:\Users\28305\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py", line 118, in run
    return self._loop.run_until_complete(task)
  File "C:\Users\28305\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 640, in run_until_complete
    self.run_forever()
  File "C:\Users\28305\AppData\Local\Programs\Python\Python311\Lib\asyncio\windows_events.py", line 321, in run_forever
    super().run_forever()
  File "C:\Users\28305\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 607, in run_forever
    self._run_once()
  File "C:\Users\28305\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 1922, in _run_once
    handle._run()
  File "C:\Users\28305\AppData\Local\Programs\Python\Python311\Lib\asyncio\events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File "D:\Nonebot2\KuriKana-Nonebot2\.venv\Lib\site-packages\nonebot\message.py", line 467, in check_and_run_matcher
    await _run_matcher(
  File "D:\Nonebot2\KuriKana-Nonebot2\.venv\Lib\site-packages\nonebot\message.py", line 419, in _run_matcher
    await matcher.run(bot, event, state, stack, dependency_cache)
  File "D:\Nonebot2\KuriKana-Nonebot2\.venv\Lib\site-packages\nonebot\internal\matcher\matcher.py", line 759, in run
    await self.simple_run(bot, event, state, stack, dependency_cache)
  File "D:\Nonebot2\KuriKana-Nonebot2\.venv\Lib\site-packages\nonebot\internal\matcher\matcher.py", line 734, in simple_run
    await handler(
  File "D:\Nonebot2\KuriKana-Nonebot2\.venv\Lib\site-packages\nonebot\dependencies\__init__.py", line 108, in __call__
    return await cast(Callable[..., Awaitable[R]], self.call)(**values)
  File "D:\Nonebot2\KuriKana-Nonebot2\.venv\Lib\site-packages\nonebot_plugin_picmcstat\__main__.py", line 35, in shortcut_handler
    await matcher.finish(await draw(host, svr_type))
> File "D:\Nonebot2\KuriKana-Nonebot2\.venv\Lib\site-packages\nonebot_plugin_picmcstat\draw.py", line 319, in draw
    draw_java(await (await JavaServer.async_lookup(ip)).async_status(), ip),
  File "D:\Nonebot2\KuriKana-Nonebot2\.venv\Lib\site-packages\nonebot_plugin_picmcstat\draw.py", line 253, in draw_java
    if mod_list and (li := format_list("§7Mod列表: ", mod_list)):
  File "D:\Nonebot2\KuriKana-Nonebot2\.venv\Lib\site-packages\nonebot_plugin_picmcstat\draw.py", line 164, in format_list
    text_img = [format_extra(x) for x in sample if x]
  File "D:\Nonebot2\KuriKana-Nonebot2\.venv\Lib\site-packages\nonebot_plugin_picmcstat\draw.py", line 164, in <listcomp>
    text_img = [format_extra(x) for x in sample if x]
  File "D:\Nonebot2\KuriKana-Nonebot2\.venv\Lib\site-packages\nonebot_plugin_picmcstat\draw.py", line 153, in format_extra
    format_code_to_bbcode(extra),
  File "D:\Nonebot2\KuriKana-Nonebot2\.venv\Lib\site-packages\nonebot_plugin_picmcstat\util.py", line 56, in format_code_to_bbcode
    parts = text.split("§")
AttributeError: 'dict' object has no attribute 'split'
08-07 12:01:09 [INFO] nonebot | Matcher(type='message', module=nonebot_plugin_picmcstat.__main__) running complete

e6d70be8bb2e2ff4762076b14dc3034d

Failed to import "nonebot_plugin_picmcstat"

05-19 15:33:18 [ERROR] nonebot | Failed to import "nonebot_plugin_picmcstat"
Traceback (most recent call last):
File "", line 1, in
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\multiprocessing\spawn.py", line 122, in spawn_main
exitcode = _main(fd, parent_sentinel)
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\multiprocessing\spawn.py", line 131, in _main
prepare(preparation_data)
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\multiprocessing\spawn.py", line 246, in prepare
_fixup_main_from_path(data['init_main_from_path'])
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\multiprocessing\spawn.py", line 297, in _fixup_main_from_path
main_content = runpy.run_path(main_path,
File "", line 286, in run_path
File "", line 98, in _run_module_code
File "", line 88, in _run_code
File "C:\Users\admin\Desktop\nonebot\QQ-bot\bot.py", line 30, in
nonebot.load_from_toml("pyproject.toml")
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\site-packages\nonebot\plugin\load.py", line 131, in load_from_toml
return load_all_plugins(plugins, plugin_dirs)
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\site-packages\nonebot\plugin\load.py", line 65, in load_all_plugins
return manager.load_all_plugins()
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\site-packages\nonebot\plugin\manager.py", line 203, in load_all_plugins
return set(
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\site-packages\nonebot\plugin\manager.py", line 204, in
filter(None, (self.load_plugin(name) for name in self.available_plugins))

File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\site-packages\nonebot\plugin\manager.py", line 167, in load_plugin
module = importlib.import_module(self.third_party_plugin_ids[name])
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\importlib_init
.py", line 90, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1387, in _gcd_import
File "", line 1360, in find_and_load
File "", line 1331, in find_and_load_unlocked
File "", line 935, in load_unlocked
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\site-packages\nonebot\plugin\manager.py", line 255, in exec_module
super().exec_module(module)
File "", line 994, in exec_module
File "", line 488, in call_with_frames_removed
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\site-packages\nonebot_plugin_picmcstat_init
.py", line 5, in
from . import main as main # noqa: E402
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\site-packages\nonebot_plugin_picmcstat_main
.py", line 11, in
from .draw import ServerType, draw
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\site-packages\nonebot_plugin_picmcstat\draw.py", line 16, in
from pil_utils import BuildImage, Text2Image
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\site-packages\pil_utils_init.py", line 1, in
from .build_image import BuildImage as BuildImage
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\site-packages\pil_utils\build_image.py", line 15, in
from .text2image import Text2Image
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\site-packages\pil_utils\text2image.py", line 11, in
from .fonts import Font, get_proper_font
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\site-packages\pil_utils\fonts.py", line 6, in
from matplotlib.font_manager import FontProperties, fontManager
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\site-packages\matplotlib_init.py", line 276, in
check_versions()
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\site-packages\matplotlib_init
.py", line 270, in check_versions
module = importlib.import_module(modname)
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\importlib_init
.py", line 90, in import_module
return _bootstrap.gcd_import(name[level:], package, level)
File "C:\Users\admin\AppData\Local\Programs\Python\Python312\Lib\site-packages\kiwisolver_init
.py", line 8, in
from ._cext import (

配置项文件路径

我用的是真寻bot搭建的,看了下你的安装方式 和配置安装好并且可以正常使用了,但是我找不到配置文件路径?请问这个配置我该写在哪里?

无法进行绘图

08-14 13:36:44 [ERROR] nonebot_plugin_picmcstat | 获取服务器状态/画服务器状态图出错
Traceback (most recent call last):
  File "D:\NoneBot\ABK\bot.py", line 21, in <module>
    nonebot.run()
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot\__init__.py", line 309, in run
    get_driver().run(*args, **kwargs)
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot\drivers\fastapi.py", line 198, in run
    uvicorn.run(
  File "D:\NoneBot\ABK\.venv\lib\site-packages\uvicorn\main.py", line 578, in run
    server.run()
  File "D:\NoneBot\ABK\.venv\lib\site-packages\uvicorn\server.py", line 61, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 636, in run_until_complete
    self.run_forever()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\windows_events.py", line 321, in run_forever
    super().run_forever()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 603, in run_forever
    self._run_once()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 1909, in _run_once
    handle._run()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot\message.py", line 467, in check_and_run_matcher
    await _run_matcher(
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot\message.py", line 419, in _run_matcher
    await matcher.run(bot, event, state, stack, dependency_cache)
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot\internal\matcher\matcher.py", line 753, in run
    await self.simple_run(bot, event, state, stack, dependency_cache)
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot\internal\matcher\matcher.py", line 728, in simple_run
    await handler(
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot\dependencies\__init__.py", line 108, in __call__
    return await cast(Callable[..., Awaitable[R]], self.call)(**values)
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot_plugin_picmcstat\__main__.py", line 27, in _
    await matcher.finish(await draw(arg, svr_type))
> File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot_plugin_picmcstat\draw.py", line 319, in draw
    draw_java(await (await JavaServer.async_lookup(ip)).async_status(), ip),
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot_plugin_picmcstat\draw.py", line 253, in draw_java
    if mod_list and (li := format_list("§7Mod列表: ", mod_list)):
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot_plugin_picmcstat\draw.py", line 164, in format_list
    text_img = [format_extra(x) for x in sample if x]
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot_plugin_picmcstat\draw.py", line 164, in <listcomp>
    text_img = [format_extra(x) for x in sample if x]
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot_plugin_picmcstat\draw.py", line 153, in format_extra
    format_code_to_bbcode(extra),
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot_plugin_picmcstat\util.py", line 56, in format_code_to_bbcode
    parts = text.split("§")
AttributeError: 'dict' object has no attribute 'split'

支持SRV记录

服务器使用SRV记录来随机分配玩家到中继节点,同时添加后备A记录来使不支持SRV记录的系统和基岩版玩家正常进入,机器人运行在Windows上(支持SRV记录),但是机器人只能读取到后备服务器信息。

某些原创表情会意外触发快捷指令

机器人是Android Watch协议,效果如图
image
image
我在.env设置的快捷命令是
MCSTAT_SHORTCUTS=[{"regex":"^([I,i]+[C,c]+[T,t]+[在线]+)?$","host":"mc.incrafttime.top","type":"je"}]
有时候发视频也会触发,不确定是插件还是协议问题,希望排查下

配置多个服务器快捷查询时 只响应某一个服务器的查询

我在env.prod里配置了多个服务器查询的快捷命令,例如

MCSTAT_SHORTCUTS=[{"regex":"^查服je$","host":"etmc.top:25565","type":"je"}]
MCSTAT_SHORTCUTS=[{"regex":"^查服be$","host":"etmc.top:19132","type":"be"}]

但插件只响应了某一个服务器的查询,后台日志如下

04-05 17:08:21 [SUCCESS] nonebot | OneBot V11 257007689 | [message.group.normal]: Message -999447032 from 2455107573@[:658967247] '查服be'
04-05 17:08:21 [INFO] nonebot | Event will be handled by Matcher(type='message', module=nonebot_plugin_picmcstat.__main__)
04-05 17:08:23 [SUCCESS] nonebot | OneBot V11 257007689 | [notice.group_card]: {'time': 1680685703, 'self_id': 257007689, 'post_type': 'notice', 'notice_type': 'group_card', 'card_old': '时雨bot 初号机|当前内存占用41.73%', 'card_new': '时雨bot 初号机|当前内存占用43.40%', 'user_id': 257007689, 'group_id': 658967247}
04-05 17:08:23 [INFO] nonebot | Matcher(type='message', module=nonebot_plugin_picmcstat.__main__) running complete
04-05 17:08:31 [SUCCESS] nonebot | OneBot V11 257007689 | [message.group.normal]: Message 601197327 from 2455107573@[:658967247] '查服je'

上游库更新后插件出现问题

我也有类似的报错

ERROR nonebot_plugin_picmcstat >> 获取服务器状态/画服务器状态图出错
Traceback (most recent call last):

  File "/bot/atri/main.py", line 9, in <module>
    ATRI.run()
    │    └ <function run at 0x7f9e5a2385e0><module 'ATRI' from '/bot/atri/ATRI/__init__.py'>

  File "/bot/atri/ATRI/__init__.py", line 36, in run
    nonebot.run(log_level=log_level)
    │       │             └ 'warning'
    │       └ <function run at 0x7f9e5af8f760><module 'nonebot' from '/root/.cache/pypoetry/virtualenvs/atri-TKW06R_y-py3.10/lib/python3.10/site-packages/nonebot/__init__....

  File "/root/.cache/pypoetry/virtualenvs/atri-TKW06R_y-py3.10/lib/python3.10/site-packages/nonebot/__init__.py", line 331, in run
    get_driver().run(*args, **kwargs)
    │                 │       └ {'log_level': 'warning'}
    │                 └ ()
    └ <function get_driver at 0x7f9e5af8f5b0>
  File "/root/.cache/pypoetry/virtualenvs/atri-TKW06R_y-py3.10/lib/python3.10/site-packages/nonebot/drivers/fastapi.py", line 201, in run
    uvicorn.run(
    │       └ <function run at 0x7f9e5a184670><module 'uvicorn' from '/root/.cache/pypoetry/virtualenvs/atri-TKW06R_y-py3.10/lib/python3.10/site-packages/uvicorn/__init__....
  File "/root/.cache/pypoetry/virtualenvs/atri-TKW06R_y-py3.10/lib/python3.10/site-packages/uvicorn/main.py", line 578, in run
    server.run()
    │      └ <function Server.run at 0x7f9e5a184820><uvicorn.server.Server object at 0x7f9e35181ff0>
  File "/root/.cache/pypoetry/virtualenvs/atri-TKW06R_y-py3.10/lib/python3.10/site-packages/uvicorn/server.py", line 61, in run
    return asyncio.run(self.serve(sockets=sockets))
           │       │   │    │             └ None
           │       │   │    └ <function Server.serve at 0x7f9e5a1848b0>
           │       │   └ <uvicorn.server.Server object at 0x7f9e35181ff0>
           │       └ <function run at 0x7f9e5c118550><module 'asyncio' from '/usr/lib/python3.10/asyncio/__init__.py'>
  File "/usr/lib/python3.10/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
           │    │                  └ <coroutine object Server.serve at 0x7f9e382e9ee0>
           │    └ <method 'run_until_complete' of 'uvloop.loop.Loop' objects><uvloop.Loop running=True closed=False debug=False>
  File "/root/.cache/pypoetry/virtualenvs/atri-TKW06R_y-py3.10/lib/python3.10/site-packages/nonebot/message.py", line 476, in check_and_run_matcher
    await _run_matcher(
          └ <function _run_matcher at 0x7f9e5aeaf010>
  File "/root/.cache/pypoetry/virtualenvs/atri-TKW06R_y-py3.10/lib/python3.10/site-packages/nonebot/message.py", line 428, in _run_matcher
    await matcher.run(bot, event, state, stack, dependency_cache)
          │       │   │    │      │      │      └ {<function _command at 0x7f9e5adb7d00>: <Task finished name='Task-1743' coro=<_command() done, defined at /root/.cache/pypoet...
          │       │   │    │      │      └ <contextlib.AsyncExitStack object at 0x7f9dea3ecc40>
          │       │   │    │      └ {'_prefix': {'command': None, 'raw_command': None, 'command_arg': None, 'command_start': None, 'command_whitespace': None}, '...
          │       │   │    └ GroupMessageEvent(time=1701623220, self_id=3218305779, post_type='message', sub_type='normal', user_id=1445352985, message_ty...
          │       │   └ Bot(type='OneBot V11', self_id='3218305779')
          │       └ <function Matcher.run at 0x7f9e5adb7a30>
          └ Matcher(type='message', module=nonebot_plugin_picmcstat.__main__, lineno=59)
  File "/root/.cache/pypoetry/virtualenvs/atri-TKW06R_y-py3.10/lib/python3.10/site-packages/nonebot/internal/matcher/matcher.py", line 846, in run
    await self.simple_run(bot, event, state, stack, dependency_cache)
          │    │          │    │      │      │      └ {<function _command at 0x7f9e5adb7d00>: <Task finished name='Task-1743' coro=<_command() done, defined at /root/.cache/pypoet...
          │    │          │    │      │      └ <contextlib.AsyncExitStack object at 0x7f9dea3ecc40>
          │    │          │    │      └ {'_prefix': {'command': None, 'raw_command': None, 'command_arg': None, 'command_start': None, 'command_whitespace': None}, '...
          │    │          │    └ GroupMessageEvent(time=1701623220, self_id=3218305779, post_type='message', sub_type='normal', user_id=1445352985, message_ty...
          │    │          └ Bot(type='OneBot V11', self_id='3218305779')
          │    └ <function simple_run at 0x7f9e4af3b130>
          └ Matcher(type='message', module=nonebot_plugin_picmcstat.__main__, lineno=59)

  File "/bot/atri/ATRI/patch.py", line 41, in simple_run
    await handler(
          └ Dependent(call=shortcut_handler)

  File "/root/.cache/pypoetry/virtualenvs/atri-TKW06R_y-py3.10/lib/python3.10/site-packages/nonebot/dependencies/__init__.py", line 113, in __call__
    return await cast(Callable[..., Awaitable[R]], self.call)(**values)
                 │    │             │         │    │    │       └ {'matcher': Matcher(type='message', module=nonebot_plugin_picmcstat.__main__, lineno=59)}
                 │    │             │         │    │    └ <function get_shortcut_handler.<locals>.shortcut_handler at 0x7f9e143cd1b0>
                 │    │             │         │    └ Dependent(call=shortcut_handler)
                 │    │             │         └ ~R
                 │    │             └ typing.Awaitable
                 │    └ typing.Callable
                 └ <function cast at 0x7f9e5c1a0280>
  File "/root/.cache/pypoetry/virtualenvs/atri-TKW06R_y-py3.10/lib/python3.10/site-packages/nonebot_plugin_picmcstat/__main__.py", line 48, in shortcut_handler
    img = await draw(host, svr_type)
          │    │          │    │      └ {'_prefix': {'command': None, 'raw_command': None, 'command_arg': None, 'command_start': None, 'command_whitespace': None}, '...
          │    │          │    └ GroupMessageEvent(time=1701623220, self_id=3218305779, post_type='message', sub_type='normal', user_id=1445352985, message_ty...
          │    │          └ Bot(type='OneBot V11', self_id='3218305779')
       │    └ <function simple_run at 0x7f9e4af3b130>
     └ Matcher(type='message', module=nonebot_plugin_picmcstat.__main__, lineno=59)

  File "/bot/atri/ATRI/patch.py", line 41, in simple_run
    await handler(
          └ Dependent(call=shortcut_handler)

  File "/root/.cache/pypoetry/virtualenvs/atri-TKW06R_y-py3.10/lib/python3.10/site-packages/nonebot/dependencies/__init__.py", line 113, in __call__
    return await cast(Callable[..., Awaitable[R]], self.call)(**values)
                 │    │             │         │    │    │       └ {'matcher': Matcher(type='message', module=nonebot_plugin_picmcstat.__main__, lineno=59)}
          │    │             │         │    │    └ <function get_shortcut_handler.<locals>.shortcut_handler at 0x7f9e143cd1b0>
    │    │             │         │    └ Dependent(call=shortcut_handler)
│    │             │         └ ~R
│    │             └ typing.Awaitable
│    └ typing.Callable
  <function cast at 0x7f9e5c1a0280>
  File "/root/.cache/pypoetry/virtualenvs/atri-TKW06R_y-py3.10/lib/python3.10/site-packages/nonebot_plugin_picmcstat/__main__.py", line 48, in shortcut_handler
    img = await draw(host, svr_type)
                │    │     └ 'be'
             │    └ 'qymc.sytes.net:19132'<function draw at 0x7f9e14337d00>
> File "/root/.cache/pypoetry/virtualenvs/atri-TKW06R_y-py3.10/lib/python3.10/site-packages/nonebot_plugin_picmcstat/draw.py", line 329, in draw
    return draw_bedrock(status, original_ip)
           │            │       └ 'qymc.sytes.net:19132'
        │            └ BedrockStatusResponse(players=BedrockStatusPlayers(online=0, max=202312), version=BedrockStatusVersion(name='1.20.41', protoc...<function draw_bedrock at 0x7f9e14337be0>
  File "/root/.cache/pypoetry/virtualenvs/atri-TKW06R_y-py3.10/lib/python3.10/site-packages/nonebot_plugin_picmcstat/draw.py", line 276, in draw_bedrock
    motd = strip_lines(res.motd)
           │           │   └ Motd(parsed=['齐悦幻想'], raw='齐悦幻想', bedrock=True)
        │           └ BedrockStatusResponse(players=BedrockStatusPlayers(online=0, max=202312), version=BedrockStatusVersion(name='1.20.41', protoc...<function strip_lines at 0x7f9e14337400>
  File "/root/.cache/pypoetry/virtualenvs/atri-TKW06R_y-py3.10/lib/python3.10/site-packages/nonebot_plugin_picmcstat/util.py", line 44, in strip_lines
    txt = "\n".join([x.strip() for x in txt.splitlines()])
                                        └ Motd(parsed=['齐悦幻想'], raw='齐悦幻想', bedrock=True)

AttributeError: 'Motd' object has no attribute 'splitlines'

Originally posted by @qingtian-crazy in #9 (comment)

配置多个服务器快捷查询加载插件报错

插件配置

MCSTAT_SHORTCUTS=[{"regex":"^查服1$","host":"node01.banrixian.cc:20001","type":"je"},{"regex":"^查服2$","host":"node01.banrixian.cc:20002","type":"je"}]

报错

[ERROR] nonebot | Failed to import "nonebot_plugin_picmcstat"
Traceback (most recent call last):
  File "<string>", line 14, in <module>
  File "/root/9/JIU/.venv/lib/python3.10/site-packages/nonebot/plugin/load.py", line 130, in load_from_toml
    return load_all_plugins(plugins, plugin_dirs)
  File "/root/9/JIU/.venv/lib/python3.10/site-packages/nonebot/plugin/load.py", line 64, in load_all_plugins
    return manager.load_all_plugins()
  File "/root/9/JIU/.venv/lib/python3.10/site-packages/nonebot/plugin/manager.py", line 176, in load_all_plugins
    return set(
  File "/root/9/JIU/.venv/lib/python3.10/site-packages/nonebot/plugin/manager.py", line 177, in <genexpr>
    filter(None, (self.load_plugin(name) for name in self.available_plugins))
> File "/root/9/JIU/.venv/lib/python3.10/site-packages/nonebot/plugin/manager.py", line 142, in load_plugin
    module = importlib.import_module(name)
  File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "/root/9/JIU/.venv/lib/python3.10/site-packages/nonebot/plugin/manager.py", line 242, in exec_module
    super().exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/root/9/JIU/.venv/lib/python3.10/site-packages/nonebot_plugin_picmcstat/__init__.py", line 5, in <module>
    from . import __main__ as __main__  # noqa: E402
  File "/root/9/JIU/.venv/lib/python3.10/site-packages/nonebot_plugin_picmcstat/__main__.py", line 10, in <module>
    from .config import ShortcutType, config
  File "/root/9/JIU/.venv/lib/python3.10/site-packages/nonebot_plugin_picmcstat/config.py", line 6, in <module>
    from .const import ServerType
  File "/root/9/JIU/.venv/lib/python3.10/site-packages/nonebot_plugin_picmcstat/const.py", line 3, in <module>
    from mcstatus.motd.components import Formatting, MinecraftColor
ModuleNotFoundError: No module named 'mcstatus.motd`

支持Ping中文域名

如题
这是例子:motd(pe) 中文域名.domain
PE版不支持中文域名关插件什么事(逃)

查询时报错

日志如下

05-13 21:58:28 [SUCCESS] nonebot | OneBot V11 257007689 | [message.group.normal]: Message 1238991459 from 2455107573@[:518579701] '查服je'
05-13 21:58:28 [INFO] nonebot | Event will be handled by Matcher(type='message', module=nonebot_plugin_picmcstat.__main__)
05-13 21:58:29 [ERROR] nonebot_plugin_picmcstat | 获取服务器状态/画服务器状态图出错
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python3.10/multiprocessing/spawn.py", line 116, in spawn_main
    exitcode = _main(fd, parent_sentinel)
  File "/usr/lib/python3.10/multiprocessing/spawn.py", line 129, in _main
    return self._bootstrap(parent_sentinel)
  File "/usr/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/usr/lib/python3.10/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot_plugin_reboot/reloader.py", line 27, in _run
    _nb_run(*args, **kwargs)
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot/__init__.py", line 273, in run
    get_driver().run(*args, **kwargs)
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot/drivers/fastapi.py", line 187, in run
    uvicorn.run(
  File "/home/yuyue/.local/lib/python3.10/site-packages/uvicorn/main.py", line 569, in run
    server.run()
  File "/home/yuyue/.local/lib/python3.10/site-packages/uvicorn/server.py", line 60, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "/usr/lib/python3.10/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot/message.py", line 141, in _check_matcher
    await _run_matcher(Matcher, bot, event, state, stack, dependency_cache)
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot/message.py", line 187, in _run_matcher
    await matcher.run(bot, event, state, stack, dependency_cache)
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot/internal/matcher/matcher.py", line 732, in run
    await self.simple_run(bot, event, state, stack, dependency_cache)
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot/internal/matcher/matcher.py", line 707, in simple_run
    await handler(
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot/dependencies/__init__.py", line 108, in __call__
    return await cast(Callable[..., Awaitable[R]], self.call)(**values)
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot_plugin_picmcstat/__main__.py", line 36, in shortcut_handler
    await matcher.finish(await draw(host, svr_type))
> File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot_plugin_picmcstat/draw.py", line 240, in draw
    draw_java(await (await JavaServer.async_lookup(ip)).async_status()),
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot_plugin_picmcstat/draw.py", line 156, in draw_java
    motd = strip_lines(json_to_format_code(res.raw["description"]))
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot_plugin_picmcstat/util.py", line 154, in json_to_format_code
    texts.append(json_to_format_code(extra, interpret))
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot_plugin_picmcstat/util.py", line 141, in json_to_format_code
    return "".join([json_to_format_code(x, interpret) for x in raw_json])
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot_plugin_picmcstat/util.py", line 141, in <listcomp>
    return "".join([json_to_format_code(x, interpret) for x in raw_json])
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot_plugin_picmcstat/util.py", line 154, in json_to_format_code
    texts.append(json_to_format_code(extra, interpret))
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot_plugin_picmcstat/util.py", line 141, in json_to_format_code
    return "".join([json_to_format_code(x, interpret) for x in raw_json])
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot_plugin_picmcstat/util.py", line 141, in <listcomp>
    return "".join([json_to_format_code(x, interpret) for x in raw_json])
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot_plugin_picmcstat/util.py", line 144, in json_to_format_code
    code = "".join(get_format_code_by_dict(raw_json))
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot_plugin_picmcstat/util.py", line 130, in get_format_code_by_dict
    codes.append(f"§{STRING_CODE[k]}")
KeyError: 'obfuscated'

渲染错误

11-06 21:48:14 [ERROR] nonebot_plugin_picmcstat | 获取服务器状态/画服务器状态图出错
Traceback (most recent call last):
  File "<string>", line 25, in <module>
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot\__init__.py", line 331, in run
    get_driver().run(*args, **kwargs)
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot\drivers\fastapi.py", line 201, in run
    uvicorn.run(
  File "D:\NoneBot\ABK\.venv\lib\site-packages\uvicorn\main.py", line 587, in run
    server.run()
  File "D:\NoneBot\ABK\.venv\lib\site-packages\uvicorn\server.py", line 61, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 636, in run_until_complete
    self.run_forever()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\windows_events.py", line 321, in run_forever
    super().run_forever()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 603, in run_forever
    self._run_once()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 1909, in _run_once
    handle._run()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\asyncio\events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot\message.py", line 476, in check_and_run_matcher
    await _run_matcher(
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot\message.py", line 428, in _run_matcher
    await matcher.run(bot, event, state, stack, dependency_cache)
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot\internal\matcher\matcher.py", line 846, in run
    await self.simple_run(bot, event, state, stack, dependency_cache)
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot\internal\matcher\matcher.py", line 821, in simple_run
    await handler(
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot\dependencies\__init__.py", line 113, in __call__
    return await cast(Callable[..., Awaitable[R]], self.call)(**values)
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot_plugin_picmcstat\__main__.py", line 27, in _
    await matcher.finish(await draw(arg, svr_type))
> File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot_plugin_picmcstat\draw.py", line 321, in draw
    draw_java(await (await JavaServer.async_lookup(ip)).async_status(), ip),
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot_plugin_picmcstat\draw.py", line 227, in draw_java
    motd = strip_lines(json_to_format_code(res.raw["description"]))
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot_plugin_picmcstat\util.py", line 123, in json_to_format_code
    texts.append(json_to_format_code(extra, interpret))
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot_plugin_picmcstat\util.py", line 110, in json_to_format_code
    return "§r".join([json_to_format_code(x, interpret) for x in raw_json])
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot_plugin_picmcstat\util.py", line 110, in <listcomp>
    return "§r".join([json_to_format_code(x, interpret) for x in raw_json])
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot_plugin_picmcstat\util.py", line 113, in json_to_format_code
    code = "".join(get_format_code_by_dict(raw_json))
  File "D:\NoneBot\ABK\.venv\lib\site-packages\nonebot_plugin_picmcstat\util.py", line 95, in get_format_code_by_dict
    codes.append(f"§{STRING_CODE[color]}")
KeyError: '#FF0000'

查询基岩版服务器报错

06-17 14:40:23 [SUCCESS] nonebot | OneBot V11 257******* | [message.group.normal]: Message 482100725 from 245*****3@[:518****01] '查服be'
06-17 14:40:23 [DEBUG] nonebot | Checking for matchers in priority 1...
06-17 14:40:23 [INFO] nonebot | Event will be handled by Matcher(type='message', module=nonebot_plugin_picmcstat.__main__)
06-17 14:40:23 [DEBUG] nonebot | Running Matcher(type='message', module=nonebot_plugin_picmcstat.__main__)
06-17 14:40:23 [DEBUG] nonebot | Running handler Dependent(call=shortcut_handler)
06-17 14:40:24 [ERROR] nonebot_plugin_picmcstat | 获取服务器状态/画服务器状态图出错
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python3.10/multiprocessing/spawn.py", line 116, in spawn_main
    exitcode = _main(fd, parent_sentinel)
  File "/usr/lib/python3.10/multiprocessing/spawn.py", line 129, in _main
    return self._bootstrap(parent_sentinel)
  File "/usr/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/usr/lib/python3.10/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot_plugin_reboot/reloader.py", line 27, in _run
    _nb_run(*args, **kwargs)
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot/__init__.py", line 309, in run
    get_driver().run(*args, **kwargs)
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot/drivers/fastapi.py", line 198, in run
    uvicorn.run(
  File "/home/yuyue/.local/lib/python3.10/site-packages/uvicorn/main.py", line 569, in run
    server.run()
  File "/home/yuyue/.local/lib/python3.10/site-packages/uvicorn/server.py", line 60, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "/usr/lib/python3.10/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot/message.py", line 467, in check_and_run_matcher
    await _run_matcher(
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot/message.py", line 419, in _run_matcher
    await matcher.run(bot, event, state, stack, dependency_cache)
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot/internal/matcher/matcher.py", line 753, in run
    await self.simple_run(bot, event, state, stack, dependency_cache)
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot/internal/matcher/matcher.py", line 728, in simple_run
    await handler(
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot/dependencies/__init__.py", line 108, in __call__
    return await cast(Callable[..., Awaitable[R]], self.call)(**values)
  File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot_plugin_picmcstat/__main__.py", line 35, in shortcut_handler
    await matcher.finish(await draw(host, svr_type))
> File "/home/yuyue/.local/lib/python3.10/site-packages/nonebot_plugin_picmcstat/draw.py", line 323, in draw
    draw_bedrock(await BedrockServer.lookup(ip).async_status(), ip),
  File "/home/yuyue/.local/lib/python3.10/site-packages/mcstatus/utils.py", line 51, in async_wrapper
    raise last_exc  # type: ignore # (This won't actually be unbound)
  File "/home/yuyue/.local/lib/python3.10/site-packages/mcstatus/utils.py", line 47, in async_wrapper
    return await func(*args, **kwargs)  # type: ignore # (We know func is awaitable here)
  File "/home/yuyue/.local/lib/python3.10/site-packages/mcstatus/server.py", line 220, in async_status
    return await BedrockServerStatus(self.address, self.timeout, **kwargs).read_status_async()
  File "/home/yuyue/.local/lib/python3.10/site-packages/mcstatus/bedrock_status.py", line 70, in read_status_async
    return self.parse_response(data, (end - start) * 1000)
  File "/home/yuyue/.local/lib/python3.10/site-packages/mcstatus/bedrock_status.py", line 27, in parse_response
    decoded_data = data[34 : 34 + name_length].decode().split(";")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd2 in position 5: invalid continuation byte
06-17 14:40:24 [DEBUG] nonebot | OneBot V11 | Calling API send_msg
06-17 14:40:25 [INFO] nonebot | Matcher(type='message', module=nonebot_plugin_picmcstat.__main__) running complete
06-17 14:40:25 [DEBUG] nonebot | Stop event propagation
06-17 14:40:25 [DEBUG] nonebot | Checking for matchers completed

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.