forked from bot/app
snowy 进行的更改
This commit is contained in:
14
src/plugins/liteyuki_plugin_minigame/__init__.py
Normal file
14
src/plugins/liteyuki_plugin_minigame/__init__.py
Normal file
@ -0,0 +1,14 @@
|
||||
from nonebot.plugin import PluginMetadata
|
||||
|
||||
__plugin_meta__ = PluginMetadata(
|
||||
name="轻雪小游戏",
|
||||
description="内置了一些小游戏",
|
||||
usage="",
|
||||
type="application",
|
||||
homepage="https://github.com/snowykami/LiteyukiBot",
|
||||
extra={
|
||||
"liteyuki": True,
|
||||
"toggleable" : True,
|
||||
"default_enable" : True,
|
||||
}
|
||||
)
|
@ -59,8 +59,7 @@ async def _(result: Arparma, event: T_MessageEvent, bot: T_Bot):
|
||||
ulang = get_user_lang(str(event.user_id))
|
||||
|
||||
if not os.path.exists("data/liteyuki/plugins.json"):
|
||||
shutil.copy(get_res('unsorted/plugins.json'), "data/liteyuki/plugins.json")
|
||||
nonebot.logger.info("Please update plugin store data file.")
|
||||
await npm_update()
|
||||
|
||||
if result.subcommands.get("update"):
|
||||
r = await npm_update()
|
||||
|
@ -1,3 +1,5 @@
|
||||
import os
|
||||
|
||||
import nonebot.plugin
|
||||
from nonebot import on_command
|
||||
from nonebot.internal.matcher import Matcher
|
||||
@ -11,7 +13,7 @@ from src.utils.permission import GROUP_ADMIN, GROUP_OWNER
|
||||
from src.utils.typing import T_Bot, T_MessageEvent
|
||||
from src.utils.language import get_user_lang
|
||||
from .common import get_plugin_can_be_toggle, get_plugin_current_enable, get_plugin_default_enable
|
||||
from .installer import get_store_plugin
|
||||
from .installer import get_store_plugin, npm_update
|
||||
|
||||
list_plugins = on_command("list-plugin", aliases={"列出插件", "插件列表"}, priority=0)
|
||||
# toggle_plugin = on_command("enable-plugin", aliases={"启用插件", "停用插件", "disable-plugin"}, priority=0)
|
||||
@ -25,6 +27,8 @@ toggle_plugin = on_alconna(
|
||||
|
||||
@list_plugins.handle()
|
||||
async def _(event: T_MessageEvent, bot: T_Bot):
|
||||
if not os.path.exists("data/liteyuki/plugins.json"):
|
||||
await npm_update()
|
||||
lang = get_user_lang(str(event.user_id))
|
||||
reply = f"# {lang.get('npm.loaded_plugins')} | {lang.get('npm.total', TOTAL=len(nonebot.get_loaded_plugins()))} \n***\n"
|
||||
for plugin in nonebot.get_loaded_plugins():
|
||||
@ -71,6 +75,8 @@ async def _(event: T_MessageEvent, bot: T_Bot):
|
||||
|
||||
@toggle_plugin.handle()
|
||||
async def _(result: Arparma, event: T_MessageEvent, bot: T_Bot):
|
||||
if not os.path.exists("data/liteyuki/plugins.json"):
|
||||
await npm_update()
|
||||
# 判断会话类型
|
||||
ulang = get_user_lang(str(event.user_id))
|
||||
plugin_module_name = result.args.get("plugin_name")
|
||||
|
@ -1,39 +1,101 @@
|
||||
from typing import Optional
|
||||
|
||||
from arclet.alconna import Arparma
|
||||
from nonebot import on_command
|
||||
from nonebot.params import CommandArg
|
||||
from nonebot_plugin_alconna import on_alconna, Alconna, Args, Arparma, Option, Subcommand
|
||||
|
||||
from src.utils.data import LiteModel
|
||||
from src.utils.typing import T_Bot, T_Message, T_MessageEvent
|
||||
from src.utils.data_manager import User, user_db
|
||||
from src.utils.language import get_user_lang
|
||||
from src.utils.message import Markdown as md, send_markdown
|
||||
|
||||
profile_alc = on_alconna(
|
||||
Alconna(
|
||||
["profile", "个人信息"],
|
||||
Subcommand(
|
||||
"set",
|
||||
Args["key", str]["value", str, Optional],
|
||||
alias=["s", "设置"],
|
||||
),
|
||||
Subcommand(
|
||||
"get",
|
||||
Args["key", str],
|
||||
alias=["g", "查询"],
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
|
||||
attr_map = {
|
||||
"lang" : ["lang", "language", "语言"],
|
||||
"username": ["username", "昵称", "用户名"] # Bot称呼用户的昵称
|
||||
}
|
||||
|
||||
attr_cmd = on_command("profile", aliases={"个人设置"}, priority=0)
|
||||
# json储存
|
||||
class Profile(LiteModel):
|
||||
lang: str = "zh-CN"
|
||||
nickname: str = ""
|
||||
timezone: str = "Asia/Shanghai"
|
||||
location: str = ""
|
||||
|
||||
|
||||
@attr_cmd.handle()
|
||||
async def _(bot: T_Bot, event: T_MessageEvent, args: T_Message = CommandArg()):
|
||||
user = user_db.first(User, "user_id = ?", str(event.user_id), default=User(user_id=str(event.user_id)))
|
||||
@profile_alc.handle()
|
||||
async def _(result: Arparma, event: T_MessageEvent, bot: T_Bot):
|
||||
user: User = user_db.first(User, "user_id = ?", event.user_id, default=User(user_id=str(event.user_id)))
|
||||
ulang = get_user_lang(str(event.user_id))
|
||||
if result.subcommands.get("set"):
|
||||
if result.subcommands["set"].args.get("value"):
|
||||
# TODO
|
||||
pass
|
||||
else:
|
||||
# 没有值尝试呼出菜单,若菜单为none则提示用户输入值再次尝试
|
||||
# TODO
|
||||
pass
|
||||
|
||||
args = str(args).split(" ", 1)
|
||||
input_key = args[0]
|
||||
attr_key = "username"
|
||||
for attr_key, attr_values in attr_map.items():
|
||||
if input_key in attr_values:
|
||||
break
|
||||
user.profile[result.args["key"]] = result.args["value"]
|
||||
|
||||
if len(args) == 1:
|
||||
# 查询
|
||||
value = user.__dict__[attr_key]
|
||||
await attr_cmd.finish(f"{ulang.get('user.profile_manager.query', ATTR=attr_key, VALUE=value)}")
|
||||
elif result.subcommands.get("get"):
|
||||
if result.args["key"] in user.profile:
|
||||
await profile_alc.finish(user.profile[result.args["key"]])
|
||||
else:
|
||||
await profile_alc.finish("无此键值")
|
||||
else:
|
||||
# 设置
|
||||
value = args[1]
|
||||
user.__dict__[attr_key] = value
|
||||
user_db.save(user)
|
||||
await attr_cmd.finish(f"{ulang.get('user.profile_manager.set', ATTR=attr_key, VALUE=value)}")
|
||||
profile = Profile(**user.profile)
|
||||
|
||||
for k, v in user.profile:
|
||||
profile.__setattr__(k, v)
|
||||
|
||||
reply = f"# {ulang.get("user.profile.settings")}\n***\n"
|
||||
|
||||
hidden_attr = ["id"]
|
||||
enter_attr = ["lang", "timezone"]
|
||||
|
||||
for key in sorted(profile.dict().keys()):
|
||||
if key in hidden_attr:
|
||||
continue
|
||||
val = profile.dict()[key]
|
||||
key_text = ulang.get(f"user.profile.{key}")
|
||||
btn_set = md.button(ulang.get("user.profile.edit"), f"profile set {key}",
|
||||
enter=True if key in enter_attr else False)
|
||||
reply += (f"\n**{key_text}** **{val}**\n"
|
||||
f"\n > {btn_set} {ulang.get(f'user.profile.{key}.desc')}\n\n***\n")
|
||||
await send_markdown(reply, bot, event=event)
|
||||
|
||||
|
||||
def get_profile_menu(key: str) -> str:
|
||||
"""获取属性的markdown菜单
|
||||
Args:
|
||||
key:
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
|
||||
|
||||
def set_profile(key: str, value: str) -> bool:
|
||||
"""设置属性,使用if分支对每一个合法性进行检查
|
||||
Args:
|
||||
key:
|
||||
value:
|
||||
|
||||
Returns:
|
||||
是否成功设置,输入合法性不通过返回False
|
||||
|
||||
"""
|
||||
|
15
src/plugins/liteyuki_plugin_weather/__init__.py
Normal file
15
src/plugins/liteyuki_plugin_weather/__init__.py
Normal file
@ -0,0 +1,15 @@
|
||||
from nonebot.plugin import PluginMetadata
|
||||
|
||||
__plugin_meta__ = PluginMetadata(
|
||||
name="轻雪天气",
|
||||
description="基于和风天气api的天气插件",
|
||||
usage="",
|
||||
type="application",
|
||||
homepage="https://github.com/snowykami/LiteyukiBot",
|
||||
extra={
|
||||
"liteyuki": True,
|
||||
"toggleable" : True,
|
||||
"default_enable" : True,
|
||||
}
|
||||
)
|
||||
|
0
src/plugins/liteyuki_plugin_weather/data_model.py
Normal file
0
src/plugins/liteyuki_plugin_weather/data_model.py
Normal file
Reference in New Issue
Block a user