Skip to content

Commit

Permalink
feat(graia): 升级ariadne->0.7.12, alconna->0.9.4
Browse files Browse the repository at this point in the history
  • Loading branch information
Colsrch committed Jun 17, 2022
1 parent 30b940c commit aa89ea5
Show file tree
Hide file tree
Showing 41 changed files with 361 additions and 378 deletions.
2 changes: 1 addition & 1 deletion app/console/base.py
Expand Up @@ -9,7 +9,7 @@ class ConsoleController:
def __init__(self, *args):
for arg in args:
if isinstance(arg, MatchResult):
self.param: List[str] = parse_args(arg.result.asDisplay()) # 命令内容
self.param: List[str] = parse_args(arg.result.display) # 命令内容
elif isinstance(arg, Console):
self.console = arg
elif isinstance(arg, Ariadne):
Expand Down
16 changes: 8 additions & 8 deletions app/console/basic/csm.py
Expand Up @@ -15,12 +15,12 @@
Option(
'mute',
help_text='禁言指定群成员',
args=Args['group': int, 'qq': int:0, 'time': int: 10],
args=Args['group', int]['qq', int, 0]['time', int, 10],
),
Option(
'unmute',
help_text='解除禁言指定群成员',
args=Args['group': int, 'qq': int:0],
args=Args['group', int]['qq', int, 0],
),
Option('--all|-a', help_text='是否作用于全员'),
],
Expand All @@ -36,22 +36,22 @@ async def process(self: ConsoleController, command: Arpamar):
qq = other_args['qq']
if not all_ and qq <= 0:
return self.args_error()
if (grp := (await self.app.getGroup(other_args['group']))) is None:
if (grp := (await self.app.get_group(other_args['group']))) is None:
return '未找到该群组'
if (mbr := (await self.app.getMember(grp, qq))) is None and not all_:
if (mbr := (await self.app.get_member(grp, qq))) is None and not all_:
return '未找到该成员'
try:
if command.options.get('mute'):
if all_:
await self.app.muteAll(grp)
await self.app.mute_all(grp)
return '全员禁言成功!'
await self.app.muteMember(grp, mbr, other_args['time'] * 60)
await self.app.mute_member(grp, mbr, other_args['time'] * 60)
return '禁言成功!'
elif command.options.get('unmute'):
if all_:
await self.app.unmuteAll(grp)
await self.app.unmute_all(grp)
return '取消全员禁言成功!'
await self.app.unmuteMember(grp, mbr)
await self.app.unmute_member(grp, mbr)
return '解除禁言成功!'
else:
return self.args_error()
Expand Down
6 changes: 3 additions & 3 deletions app/console/basic/info_list.py
Expand Up @@ -25,12 +25,12 @@ async def process(self: ConsoleController, command: Arpamar):
if command.find('friend'):
return '\n'.join(
f'{friend.remark}({friend.id})' + (f' - {friend.nickname}' if friend.nickname != friend.remark else '')
for friend in (await self.app.getFriendList())
for friend in (await self.app.get_friend_list())
)
elif command.find('group'):
return '\n'.join(
f'{group.name}({group.id}) - {get_perm_name(group.accountPerm)}'
for group in (await self.app.getGroupList())
f'{group.name}({group.id}) - {get_perm_name(group.account_perm)}'
for group in (await self.app.get_group_list())
)
return self.args_error()

Expand Down
6 changes: 3 additions & 3 deletions app/console/basic/power.py
Expand Up @@ -19,15 +19,15 @@
)
async def stop(self: ConsoleController, command: Arpamar):
if command.options.get('yes'):
await self.app.stop()
self.app.stop()
self.console.stop()
else:
res: str = await self.console.prompt(
l_prompt=[('class:warn', ' Are you sure to stop? '), ('', ' (y/n) ')],
style=Style([('warn', 'bg:#cccccc fg:#d00000')]),
)
if res.lower() in ('y', 'yes'):
await self.app.stop()
self.app.stop()
self.console.stop()


Expand All @@ -36,7 +36,7 @@ async def stop(self: ConsoleController, command: Arpamar):
brief_help='更新',
many=2,
alc=Alconna(command='upgrade', help_text='更新程序') + Option('--time|-t', help_text='超时时间',
args=Args['time': int:10])
args=Args['time', int, 10])
)
async def upgrade(self: ConsoleController, command: Arpamar):
try:
Expand Down
18 changes: 9 additions & 9 deletions app/console/basic/send.py
Expand Up @@ -16,25 +16,25 @@
alc=Alconna(
command=entry,
options=[
Option('--friend|-f', help_text='向指定好友发送消息', args=Args['num': int]),
Option('--group|-g', help_text='向指定群组发送消息', args=Args['num': int])
Option('--friend|-f', help_text='向指定好友发送消息', args=Args['num', int]),
Option('--group|-g', help_text='向指定群组发送消息', args=Args['num', int])
],
help_text='发送消息',
main_args=Args['msg': str]
main_args=Args['msg', str]
)
)
async def process(self: ConsoleController, command: Arpamar):
if frd := command.options.get('friend'):
if await self.app.getFriend(frd['num']):
await self.app.sendFriendMessage(
frd['num'], MessageChain.create(Plain(command.query('msg')))
if await self.app.get_friend(frd['num']):
await self.app.send_friend_message(
frd['num'], MessageChain(Plain(command.query('msg')))
)
return '发送成功!'
return '未找到该好友'
elif gp := command.options.get('group'):
if await self.app.getGroup(gp['num']):
await self.app.sendGroupMessage(
gp['num'], MessageChain.create(Plain(command.query('msg')))
if await self.app.get_group(gp['num']):
await self.app.send_group_message(
gp['num'], MessageChain(Plain(command.query('msg')))
)
return '发送成功!'
return '未找到该群组'
Expand Down
32 changes: 15 additions & 17 deletions app/core/app.py
Expand Up @@ -6,10 +6,13 @@
from types import ModuleType
from typing import List

from graia.ariadne.adapter import DefaultAdapter
from graia.ariadne.app import Ariadne
from graia.ariadne.connection.config import (
HttpClientConfig,
WebsocketClientConfig,
config as cfg
)
from graia.ariadne.console import Console
from graia.ariadne.model import MiraiSession
from graia.broadcast import Broadcast
from graia.broadcast.interrupt import InterruptControl
from graia.scheduler import GraiaScheduler
Expand Down Expand Up @@ -54,22 +57,17 @@ def __init__(self, config: Config):
logger.info("Initializing")
self.__loop = asyncio.get_event_loop()
self.__bcc = Broadcast(loop=self.__loop)
Ariadne.config(loop=self.__loop, broadcast=self.__bcc)
self.__app = Ariadne(
broadcast=self.__bcc,
connect_info=DefaultAdapter(
broadcast=self.__bcc,
mirai_session=MiraiSession(
host=f'http://{config.LOGIN_HOST}:{config.LOGIN_PORT}',
verify_key=config.VERIFY_KEY,
account=config.LOGIN_QQ
),
log=config.HEARTBEAT_LOG
),
chat_log_config=False
connection=cfg(
config.LOGIN_QQ,
config.VERIFY_KEY,
HttpClientConfig(host=f'http://{config.LOGIN_HOST}:{config.LOGIN_PORT}'),
WebsocketClientConfig(host=f'http://{config.LOGIN_HOST}:{config.LOGIN_PORT}')
)
)
self.__inc = InterruptControl(self.__bcc)
self.__scheduler = GraiaScheduler(loop=self.__loop, broadcast=self.__bcc)
self.__app.debug = False
self.__config = config
self.__console = Console(
broadcast=self.__bcc,
Expand Down Expand Up @@ -168,16 +166,16 @@ async def bot_launch_init(self):
self.__loop.create_task(custom_schedule(self.__scheduler, self.__app))
await self.__database.start()
if self.__config.WEBSERVER_ENABLE:
logger.success("WebServer is starting")
threading.Thread(daemon=True, target=WebServer).start()
self.__loop.create_task(power(self.__app, sys.argv))
group_list = await self.__app.getGroupList()
group_list = await self.__app.get_group_list()
logger.info("本次启动活动群组如下:")
for group in group_list:
logger.info(f"群ID: {str(group.id).ljust(14)}群名: {group.name}")

logger.success("WebServer is starting")
importlib.__import__("app.core.event")
importlib.__import__("app.core.console")
except Exception as e:
logger.exception(e)
exit()
self.__app.stop()
6 changes: 3 additions & 3 deletions app/core/config.py
Expand Up @@ -11,7 +11,7 @@ class Config:
INFO_VERSION = '2.3.0'
INFO_DOCS = 'https://madoka.colsrch.cn'
INFO_REPO = 'https://github.com/MadokaProject/Madoka'
REMOTE_REPO_VERSION = 'v2.2'
REMOTE_REPO_VERSION = 'release'
REMOTE_VERSION_URL = 'https://fastly.jsdelivr.net/gh/MadokaProject/Madoka@master/app/util/version.json'

CONFIG_FILE = Path(__file__).parent.joinpath('config.ini')
Expand All @@ -34,10 +34,10 @@ def __init__(self):
try:
self.LOGIN_HOST = self.cf.get('bot', 'host', fallback='127.0.0.1')
self.LOGIN_PORT = self.cf.get('bot', 'port', fallback='8080')
self.LOGIN_QQ = self.cf.get('bot', 'qq')
self.LOGIN_QQ = self.cf.getint('bot', 'qq')
self.VERIFY_KEY = self.cf.get('bot', 'verify_key')
self.BOT_NAME = self.cf.get('bot', 'bot_name')
self.MASTER_QQ = self.cf.get('bot', 'master_qq')
self.MASTER_QQ = self.cf.getint('bot', 'master_qq')
self.MASTER_NAME = self.cf.get('bot', 'master_name')
self.DEBUG = self.cf.getboolean('bot', 'debug', fallback=False)
self.ONLINE = self.cf.getboolean('bot', 'online', fallback=True)
Expand Down
2 changes: 1 addition & 1 deletion app/core/console.py
Expand Up @@ -24,7 +24,7 @@ async def console_handler(
console: Console,
params: MatchResult,
):
if params := params.result.asDisplay():
if params := params.result.display:
send_help = False # 是否为主菜单帮助
resp = 'Usage: [COMMAND] [OPTION]'
param = parse_args(params, keep_head=True)
Expand Down
16 changes: 8 additions & 8 deletions app/core/controller.py
Expand Up @@ -18,7 +18,7 @@ def __init__(self, *args):
self.args = Plugin(*args)

async def process_event(self):
msg = self.args.message.asDisplay()
msg = self.args.message.display
send_help = False # 是否为主菜单帮助
resp = None
i = 1
Expand Down Expand Up @@ -109,15 +109,15 @@ async def process_event(self):
resp = await plg.func(self.args, result, plg.alc)
elif result.head_matched:
if alc_help.buff:
resp = MessageChain.create([Image(data_bytes=await create_image(alc_help.buff, 80))])
resp = MessageChain([Image(data_bytes=await create_image(alc_help.buff, 80))])
else:
resp = MessageChain.create(Plain('参数错误!'))
resp = MessageChain(Plain('参数错误!'))
sys.stdout = current
except Exception as e:
resp = MessageChain.create(Plain(f'{e}'))
resp = MessageChain(Plain(f'{e}'))
sys.stdout = current
else:
resp = MessageChain.create([Plain('此功能未开启!')])
resp = MessageChain([Plain('此功能未开启!')])
await self._do_send(resp)

# 主菜单帮助发送
Expand All @@ -129,13 +129,13 @@ async def process_event(self):
+ "\n所有功能均需添加前缀 ."
+ "\n源码: github.com/MadokaProject/Madoka"
)
await self._do_send(MessageChain.create([Image(data_bytes=await create_image(resp, 80))]))
await self._do_send(MessageChain([Image(data_bytes=await create_image(resp, 80))]))

async def _do_send(self, resp):
"""发送消息"""
if not isinstance(resp, MessageChain):
return
if hasattr(self.args, 'friend'): # 发送好友消息
await self.args.app.sendFriendMessage(self.args.friend, resp)
await self.args.app.send_friend_message(self.args.friend, resp)
elif hasattr(self.args, 'group'): # 发送群聊消息
await self.args.app.sendGroupMessage(self.args.group, resp)
await self.args.app.send_group_message(self.args.group, resp)

0 comments on commit aa89ea5

Please sign in to comment.