mirror of
https://github.com/LiteyukiStudio/LiteyukiBot.git
synced 2024-11-26 18:45:07 +08:00
first commit
This commit is contained in:
commit
d425cf8685
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
.idea
|
||||||
|
plugin
|
4
datapack/liteyuki_default/metadata.json
Normal file
4
datapack/liteyuki_default/metadata.json
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "Liteyuki Default",
|
||||||
|
"version": "1.0"
|
||||||
|
}
|
4
datapack/liteyuki_language/metadata.json
Normal file
4
datapack/liteyuki_language/metadata.json
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "Liteyuki Language Pack",
|
||||||
|
"version": "1.0"
|
||||||
|
}
|
6
main.py
Normal file
6
main.py
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
from src.liteyuki import *
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
liteyuki = Liteyuki()
|
||||||
|
app = liteyuki.get_asgi()
|
||||||
|
liteyuki.run(app="main:app")
|
9
plugins/liteyuki_plugin_hello/__init__.py
Normal file
9
plugins/liteyuki_plugin_hello/__init__.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
from nonebot import on_command
|
||||||
|
from nonebot.rule import to_me
|
||||||
|
|
||||||
|
hello = on_command('hello', aliases={'你好'}, rule=to_me())
|
||||||
|
|
||||||
|
|
||||||
|
@hello.handle()
|
||||||
|
async def handle_first_receive(bot, event, state):
|
||||||
|
await hello.finish('Hello, world!')
|
3
requirements.txt
Normal file
3
requirements.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
nonebot2[fastapi]
|
||||||
|
watchdog==2.1.6
|
0
src/api/data.py
Normal file
0
src/api/data.py
Normal file
33
src/api/utils.py
Normal file
33
src/api/utils.py
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
import os
|
||||||
|
import yaml
|
||||||
|
from nonebot import logger
|
||||||
|
|
||||||
|
|
||||||
|
def load_config() -> dict[str, any]:
|
||||||
|
"""
|
||||||
|
Load config from config.yml
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
config = {
|
||||||
|
'host': '0.0.0.0',
|
||||||
|
'port': 20216,
|
||||||
|
'nickname': ['Liteyuki'],
|
||||||
|
'command_start': [''],
|
||||||
|
}
|
||||||
|
|
||||||
|
if not os.path.exists('config.yml'):
|
||||||
|
logger.warning('warn.config_file_not_found')
|
||||||
|
with open('config.yml', 'w', encoding='utf-8') as f:
|
||||||
|
f.write(yaml.dump(config, indent=4))
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
with open('config.yml', 'r', encoding='utf-8') as f:
|
||||||
|
config.update(yaml.load(f, Loader=yaml.FullLoader))
|
||||||
|
logger.success('success.config_loaded')
|
||||||
|
# 格式化后写入
|
||||||
|
with open('config.yml', 'w', encoding='utf-8') as f:
|
||||||
|
f.write(yaml.dump(config, indent=4))
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f'error.load_config: {e}')
|
||||||
|
|
||||||
|
return config
|
46
src/liteyuki.py
Normal file
46
src/liteyuki.py
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
from typing import Any, Optional
|
||||||
|
from nonebot import DOTENV_TYPE
|
||||||
|
import nonebot
|
||||||
|
from nonebot import logger
|
||||||
|
from nonebot.adapters.onebot.v11 import Adapter as OnebotV11Adapter
|
||||||
|
from nonebot.adapters.onebot.v12 import Adapter as OnebotV12Adapter
|
||||||
|
|
||||||
|
from src.api.utils import load_config
|
||||||
|
|
||||||
|
app = None
|
||||||
|
adapters = [
|
||||||
|
OnebotV11Adapter,
|
||||||
|
OnebotV12Adapter
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class Liteyuki:
|
||||||
|
def __init__(self, *, _env_file: Optional[DOTENV_TYPE] = None, **kwargs: Any):
|
||||||
|
print(
|
||||||
|
'\033[34m' + r''' __ ______ ________ ________ __ __ __ __ __ __ ______
|
||||||
|
/ | / |/ |/ |/ \ / |/ | / |/ | / |/ |
|
||||||
|
$$ | $$$$$$/ $$$$$$$$/ $$$$$$$$/ $$ \ /$$/ $$ | $$ |$$ | /$$/ $$$$$$/
|
||||||
|
$$ | $$ | $$ | $$ |__ $$ \/$$/ $$ | $$ |$$ |/$$/ $$ |
|
||||||
|
$$ | $$ | $$ | $$ | $$ $$/ $$ | $$ |$$ $$< $$ |
|
||||||
|
$$ | $$ | $$ | $$$$$/ $$$$/ $$ | $$ |$$$$$ \ $$ |
|
||||||
|
$$ |_____ _$$ |_ $$ | $$ |_____ $$ | $$ \__$$ |$$ |$$ \ _$$ |_
|
||||||
|
$$ |/ $$ | $$ | $$ | $$ | $$ $$/ $$ | $$ |/ $$ |
|
||||||
|
$$$$$$$$/ $$$$$$/ $$/ $$$$$$$$/ $$/ $$$$$$/ $$/ $$/ $$$$$$/ ''' + '\033[0m'
|
||||||
|
)
|
||||||
|
|
||||||
|
kwargs = load_config()
|
||||||
|
self.nonebot = nonebot
|
||||||
|
self.nonebot.init(_env_file=_env_file, **kwargs)
|
||||||
|
self.driver = self.nonebot.get_driver()
|
||||||
|
|
||||||
|
def run(self, *args, **kwargs):
|
||||||
|
for adapter in adapters:
|
||||||
|
self.driver.register_adapter(adapter)
|
||||||
|
self.nonebot.load_plugin('src.liteyuki_main')
|
||||||
|
self.nonebot.load_plugins('src/builtin')
|
||||||
|
self.nonebot.load_plugins('plugins')
|
||||||
|
# Todo: load from database
|
||||||
|
self.nonebot.run(*args, **kwargs)
|
||||||
|
|
||||||
|
def get_asgi(self):
|
||||||
|
return self.nonebot.get_asgi()
|
16
src/liteyuki_main.py
Normal file
16
src/liteyuki_main.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
from nonebot import on_command
|
||||||
|
from nonebot.adapters.onebot.v11.event import MessageEvent
|
||||||
|
from nonebot.permission import SUPERUSER
|
||||||
|
import os
|
||||||
|
folders = ['plugins']
|
||||||
|
for folder in folders:
|
||||||
|
if not os.path.exists(folder):
|
||||||
|
os.makedirs(folder)
|
||||||
|
|
||||||
|
echo = on_command('echo', permission=SUPERUSER, priority=5)
|
||||||
|
|
||||||
|
|
||||||
|
@echo.handle()
|
||||||
|
async def _(event: MessageEvent):
|
||||||
|
print(event.get_message())
|
||||||
|
await echo.finish(event.get_message())
|
Loading…
Reference in New Issue
Block a user