Skip to content

Commit

Permalink
Merge pull request #4 from Ailitonia/dev
Browse files Browse the repository at this point in the history
适配Nonebot2 PreRelease v2.0.0a9
  • Loading branch information
Ailitonia committed Feb 2, 2021
2 parents 6dc3fd3 + ca05230 commit 5446af7
Show file tree
Hide file tree
Showing 31 changed files with 619 additions and 253 deletions.
17 changes: 13 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
# nonebot2_miya
<div align="center">

基于nonebot2的qq机器人
# Omega Miya

基于 [nonebot2](https://github.com/nonebot/nonebot2) 的 qq 机器人

![GitHub](https://img.shields.io/github/license/Ailitonia/nonebot2_miya)
![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/Ailitonia/nonebot2_miya?include_prereleases)
![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/Ailitonia/nonebot2_miya)

</div>

## 当前适配nonebot2版本

[Nonebot2 PreRelease v2.0.0a8.post2](https://github.com/nonebot/nonebot2/releases/tag/v2.0.0a8.post2)
[Nonebot2 PreRelease v2.0.0a9](https://github.com/nonebot/nonebot2/releases/tag/v2.0.0a9)

## 配套使用的api

Expand All @@ -25,8 +33,9 @@ api主要用于获取pixiv等网站内容
- Pixivision订阅(需要 Miya API)
- 复读姬
- roll点抽奖
- 搜番剧(trace.moe API)
- 搜二次元图(Saucenao API 和 ascii2d)
- 来点涩图(需要 Miya API / 涩图数据库需要自己导入
- 来点涩图 / 来点萌图(需要 Miya API / 图片数据库需要自己导入
- 表情包制作器

## 一张图看懂如何获取B站cookies
Expand Down
7 changes: 4 additions & 3 deletions omega_miya/plugins/Omega_help/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from nonebot import on_command
from nonebot.plugin import get_loaded_plugins
from nonebot.typing import T_State
from nonebot.adapters import Bot, Event
from nonebot.adapters.cqhttp.bot import Bot
from nonebot.adapters.cqhttp.event import GroupMessageEvent
from nonebot.adapters.cqhttp.permission import GROUP
from omega_miya.utils.Omega_plugin_utils import has_command_permission

Expand All @@ -21,7 +22,7 @@


@bot_help.handle()
async def handle_first_receive(bot: Bot, event: Event, state: T_State):
async def handle_first_receive(bot: Bot, event: GroupMessageEvent, state: T_State):
# 获取设置了名称的插件列表
plugins = list(filter(lambda p: set(p.export.keys()).issuperset({'custom_name', 'usage'}), get_loaded_plugins()))
if not plugins:
Expand All @@ -39,7 +40,7 @@ async def handle_first_receive(bot: Bot, event: Event, state: T_State):


@bot_help.got('plugin_name', prompt='你想查询哪个插件的用法呢?')
async def handle_plugin_name(bot: Bot, event: Event, state: T_State):
async def handle_plugin_name(bot: Bot, event: GroupMessageEvent, state: T_State):
plugin_custom_name = state["plugin_name"]
# 如果发了参数则发送相应命令的使用帮助
for p in state['plugin_list']:
Expand Down
41 changes: 21 additions & 20 deletions omega_miya/plugins/Omega_manage/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from nonebot import on_command, export, logger, require
from nonebot.permission import SUPERUSER
from nonebot.typing import T_State
from nonebot.adapters import Bot, Event
from nonebot.adapters.cqhttp.bot import Bot
from nonebot.adapters.cqhttp.event import GroupMessageEvent
from nonebot.adapters.cqhttp.permission import GROUP_ADMIN, GROUP_OWNER
from omega_miya.utils.Omega_Base import DBGroup, DBUser, Result
from omega_miya.utils.Omega_plugin_utils import init_export
Expand Down Expand Up @@ -31,7 +32,7 @@

# 修改默认参数处理
@omega.args_parser
async def parse(bot: Bot, event: Event, state: T_State):
async def parse(bot: Bot, event: GroupMessageEvent, state: T_State):
args = str(event.get_plaintext()).strip().lower().split()
if not args:
await omega.reject('你似乎没有发送有效的参数呢QAQ, 请重新发送:')
Expand All @@ -41,7 +42,7 @@ async def parse(bot: Bot, event: Event, state: T_State):


@omega.handle()
async def handle_first_receive(bot: Bot, event: Event, state: T_State):
async def handle_first_receive(bot: Bot, event: GroupMessageEvent, state: T_State):
args = str(event.get_plaintext()).strip().lower().split()
if args and len(args) == 1:
state['sub_command'] = args[0]
Expand All @@ -54,7 +55,7 @@ async def handle_first_receive(bot: Bot, event: Event, state: T_State):


@omega.got('sub_command', prompt='执行操作?\n【Init/Upgrade/Notice/Command/SetLevel/ShowPermission/ResetPermission】')
async def handle_sub_command(bot: Bot, event: Event, state: T_State):
async def handle_sub_command(bot: Bot, event: GroupMessageEvent, state: T_State):
# 子命令列表
command = {
'init': group_init,
Expand All @@ -75,18 +76,18 @@ async def handle_sub_command(bot: Bot, event: Event, state: T_State):
await omega.finish('没有这个命令哦QAQ')
result = await command[sub_command](bot=bot, event=event, state=state)
if result.success():
logger.info(f"Group: {event.dict().get('group_id')}, {sub_command}, Success, {result.info}")
logger.info(f"Group: {event.group_id}, {sub_command}, Success, {result.info}")
if sub_command in need_reply:
await omega.finish(result.result)
else:
await omega.finish('Success')
else:
logger.error(f"Group: {event.dict().get('group_id')}, {sub_command}, Failed, {result.info}")
logger.error(f"Group: {event.group_id}, {sub_command}, Failed, {result.info}")
await omega.finish('Failed QAQ')


async def group_init(bot: Bot, event: Event, state: T_State) -> Result:
group_id = event.dict().get('group_id')
async def group_init(bot: Bot, event: GroupMessageEvent, state: T_State) -> Result:
group_id = event.group_id
# 调用api获取群信息
group_info = await bot.call_api(api='get_group_info', group_id=group_id)
group_name = group_info['group_name']
Expand Down Expand Up @@ -133,8 +134,8 @@ async def group_init(bot: Bot, event: Event, state: T_State) -> Result:
return Result(False, f'Success with ignore user: {failed_user}', 0)


async def group_upgrade(bot: Bot, event: Event, state: T_State) -> Result:
group_id = event.dict().get('group_id')
async def group_upgrade(bot: Bot, event: GroupMessageEvent, state: T_State) -> Result:
group_id = event.group_id
# 调用api获取群信息
group_info = await bot.call_api(api='get_group_info', group_id=group_id)
group_name = group_info['group_name']
Expand Down Expand Up @@ -189,8 +190,8 @@ async def group_upgrade(bot: Bot, event: Event, state: T_State) -> Result:
return Result(False, f'Success with ignore user: {failed_user}', 0)


async def set_group_notice(bot: Bot, event: Event, state: T_State) -> Result:
group_id = event.dict().get('group_id')
async def set_group_notice(bot: Bot, event: GroupMessageEvent, state: T_State) -> Result:
group_id = event.group_id
group = DBGroup(group_id=group_id)
group_command = group.permission_command().result
group_level = group.permission_level().result
Expand All @@ -205,8 +206,8 @@ async def set_group_notice(bot: Bot, event: Event, state: T_State) -> Result:
return result


async def set_group_command(bot: Bot, event: Event, state: T_State) -> Result:
group_id = event.dict().get('group_id')
async def set_group_command(bot: Bot, event: GroupMessageEvent, state: T_State) -> Result:
group_id = event.group_id
group = DBGroup(group_id=group_id)
group_notice = group.permission_notice().result
group_level = group.permission_level().result
Expand All @@ -221,8 +222,8 @@ async def set_group_command(bot: Bot, event: Event, state: T_State) -> Result:
return result


async def set_group_level(bot: Bot, event: Event, state: T_State) -> Result:
group_id = event.dict().get('group_id')
async def set_group_level(bot: Bot, event: GroupMessageEvent, state: T_State) -> Result:
group_id = event.group_id
group = DBGroup(group_id=group_id)
group_notice = group.permission_notice().result
group_command = group.permission_command().result
Expand All @@ -235,8 +236,8 @@ async def set_group_level(bot: Bot, event: Event, state: T_State) -> Result:
return result


async def show_group_permission(bot: Bot, event: Event, state: T_State) -> Result:
group_id = event.dict().get('group_id')
async def show_group_permission(bot: Bot, event: GroupMessageEvent, state: T_State) -> Result:
group_id = event.group_id
group = DBGroup(group_id=group_id)
group_notice = group.permission_notice()
group_command = group.permission_command()
Expand All @@ -252,8 +253,8 @@ async def show_group_permission(bot: Bot, event: Event, state: T_State) -> Resul
return result


async def reset_group_permission(bot: Bot, event: Event, state: T_State) -> Result:
group_id = event.dict().get('group_id')
async def reset_group_permission(bot: Bot, event: GroupMessageEvent, state: T_State) -> Result:
group_id = event.group_id
group = DBGroup(group_id=group_id)

result = group.permission_reset()
Expand Down
53 changes: 27 additions & 26 deletions omega_miya/plugins/Omega_skill/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from nonebot import on_command, export, logger
from nonebot.permission import SUPERUSER
from nonebot.typing import T_State
from nonebot.adapters import Bot, Event
from nonebot.adapters.cqhttp.bot import Bot
from nonebot.adapters.cqhttp.event import GroupMessageEvent
from nonebot.adapters.cqhttp.permission import GROUP
from omega_miya.utils.Omega_Base import DBSkill, DBUser, DBTable, Result
from omega_miya.utils.Omega_plugin_utils import init_export
Expand Down Expand Up @@ -36,7 +37,7 @@

# 修改默认参数处理
@skill_admin.args_parser
async def parse(bot: Bot, event: Event, state: T_State):
async def parse(bot: Bot, event: GroupMessageEvent, state: T_State):
args = str(event.get_plaintext()).strip().lower().split()
if not args:
await skill_admin.reject('你似乎没有发送有效的参数呢QAQ, 请重新发送:')
Expand All @@ -46,7 +47,7 @@ async def parse(bot: Bot, event: Event, state: T_State):


@skill_admin.handle()
async def handle_first_receive(bot: Bot, event: Event, state: T_State):
async def handle_first_receive(bot: Bot, event: GroupMessageEvent, state: T_State):
args = str(event.get_plaintext()).strip().lower().split()
if not args:
pass
Expand All @@ -64,7 +65,7 @@ async def handle_first_receive(bot: Bot, event: Event, state: T_State):


@skill_admin.got('sub_command', prompt='执行操作?\n【add/del】')
async def handle_sub_command_args(bot: Bot, event: Event, state: T_State):
async def handle_sub_command_args(bot: Bot, event: GroupMessageEvent, state: T_State):
if state['sub_command'] not in ['add', 'del']:
await skill_admin.reject('没有这个命令哦, 请重新输入:')
if state['sub_command'] == 'del':
Expand All @@ -73,7 +74,7 @@ async def handle_sub_command_args(bot: Bot, event: Event, state: T_State):

@skill_admin.got('skill_name', prompt='请输入技能名称:')
@skill_admin.got('skill_description', prompt='请输入技能描述:')
async def handle_sub_command(bot: Bot, event: Event, state: T_State):
async def handle_sub_command(bot: Bot, event: GroupMessageEvent, state: T_State):
# 子命令列表
command = {
'add': skill_add,
Expand All @@ -85,22 +86,22 @@ async def handle_sub_command(bot: Bot, event: Event, state: T_State):
await skill_admin.finish('没有这个命令哦QAQ')
result = await command[sub_command](bot=bot, event=event, state=state)
if result.success():
logger.info(f"Group: {event.dict().get('group_id')}, {sub_command}, Success, {result.info}")
logger.info(f"Group: {event.group_id}, {sub_command}, Success, {result.info}")
await skill_admin.finish('Success')
else:
logger.error(f"Group: {event.dict().get('group_id')}, {sub_command}, Failed, {result.info}")
logger.error(f"Group: {event.group_id}, {sub_command}, Failed, {result.info}")
await skill_admin.finish('Failed QAQ')


async def skill_add(bot: Bot, event: Event, state: T_State) -> Result:
async def skill_add(bot: Bot, event: GroupMessageEvent, state: T_State) -> Result:
skill_name = state["skill_name"]
skill_description = state["skill_description"]
skill = DBSkill(name=skill_name)
result = skill.add(description=skill_description)
return result


async def skill_del(bot: Bot, event: Event, state: T_State) -> Result:
async def skill_del(bot: Bot, event: GroupMessageEvent, state: T_State) -> Result:
skill_name = state["skill_name"]
skill = DBSkill(name=skill_name)
result = skill.delete()
Expand All @@ -114,7 +115,7 @@ async def skill_del(bot: Bot, event: Event, state: T_State) -> Result:

# 修改默认参数处理
@skill_group_user.args_parser
async def parse(bot: Bot, event: Event, state: T_State):
async def parse(bot: Bot, event: GroupMessageEvent, state: T_State):
args = str(event.get_plaintext()).strip().lower().split()
if not args:
await skill_group_user.reject('你似乎没有发送有效的参数呢QAQ, 请重新发送:')
Expand All @@ -124,7 +125,7 @@ async def parse(bot: Bot, event: Event, state: T_State):


@skill_group_user.handle()
async def handle_first_receive(bot: Bot, event: Event, state: T_State):
async def handle_first_receive(bot: Bot, event: GroupMessageEvent, state: T_State):
args = str(event.get_plaintext()).strip().lower().split()
if not args:
pass
Expand All @@ -142,7 +143,7 @@ async def handle_first_receive(bot: Bot, event: Event, state: T_State):


@skill_group_user.got('sub_command', prompt='执行操作?\n【清单/我会的/设置/删除/清空】')
async def handle_sub_command_args(bot: Bot, event: Event, state: T_State):
async def handle_sub_command_args(bot: Bot, event: GroupMessageEvent, state: T_State):
if state['sub_command'] not in ['清单', '我会的', '设置', '删除', '清空']:
await skill_admin.reject('没有这个命令哦, 请重新输入:')
if state['sub_command'] in ['清单', '我会的', '清空']:
Expand All @@ -153,21 +154,21 @@ async def handle_sub_command_args(bot: Bot, event: Event, state: T_State):


@skill_group_user.got('skill_name', prompt='请输入技能名称:')
async def handle_sub_command_args(bot: Bot, event: Event, state: T_State):
async def handle_sub_command_args(bot: Bot, event: GroupMessageEvent, state: T_State):
if state['sub_command'] in ['设置', '删除']:
res = await skill_list(bot=bot, event=event, state=state)
if state['skill_name'] not in res.result:
await skill_admin.reject('没有这个技能哦, 请重新输入:')


@skill_group_user.got('skill_level', prompt='请输入技能等级【普通/熟练/专业】')
async def handle_sub_command_args(bot: Bot, event: Event, state: T_State):
async def handle_sub_command_args(bot: Bot, event: GroupMessageEvent, state: T_State):
if state['sub_command'] == '设置' and state['skill_level'] not in ['普通', '熟练', '专业']:
await skill_admin.reject('没有这个技能等级哦, 请重新输入:')


@skill_group_user.got('sub_command', prompt='执行操作?')
async def handle_sub_command(bot: Bot, event: Event, state: T_State):
async def handle_sub_command(bot: Bot, event: GroupMessageEvent, state: T_State):
# 子命令列表
command = {
'清单': skill_list,
Expand All @@ -188,17 +189,17 @@ async def handle_sub_command(bot: Bot, event: Event, state: T_State):
await skill_group_user.finish('没有这个命令哦QAQ')
result = await command[sub_command](bot=bot, event=event, state=state)
if result.success():
logger.info(f"Group: {event.dict().get('group_id')}, {sub_command}, Success, {result.info}")
logger.info(f"Group: {event.group_id}, {sub_command}, Success, {result.info}")
if sub_command in need_reply:
await skill_group_user.finish(result.result)
else:
await skill_group_user.finish('Success')
else:
logger.error(f"Group: {event.dict().get('group_id')}, {sub_command}, Failed, {result.info}")
logger.error(f"Group: {event.group_id}, {sub_command}, Failed, {result.info}")
await skill_group_user.finish('Failed QAQ')


async def skill_list(bot: Bot, event: Event, state: T_State) -> Result:
async def skill_list(bot: Bot, event: GroupMessageEvent, state: T_State) -> Result:
skill_table = DBTable(table_name='Skill')
_res = skill_table.list_col(col_name='name')
if _res.success():
Expand All @@ -211,8 +212,8 @@ async def skill_list(bot: Bot, event: Event, state: T_State) -> Result:
return result


async def user_skill_list(bot: Bot, event: Event, state: T_State) -> Result:
user_id = event.dict().get('user_id')
async def user_skill_list(bot: Bot, event: GroupMessageEvent, state: T_State) -> Result:
user_id = event.user_id
user = DBUser(user_id=user_id)
_res = user.skill_list()
if _res.success():
Expand All @@ -234,8 +235,8 @@ async def user_skill_list(bot: Bot, event: Event, state: T_State) -> Result:
return result


async def user_skill_set(bot: Bot, event: Event, state: T_State) -> Result:
user_id = event.dict().get('user_id')
async def user_skill_set(bot: Bot, event: GroupMessageEvent, state: T_State) -> Result:
user_id = event.user_id
user = DBUser(user_id=user_id)
skill_name = state['skill_name']
skill_level = state['skill_level']
Expand All @@ -254,8 +255,8 @@ async def user_skill_set(bot: Bot, event: Event, state: T_State) -> Result:
return result


async def user_skill_del(bot: Bot, event: Event, state: T_State) -> Result:
user_id = event.dict().get('user_id')
async def user_skill_del(bot: Bot, event: GroupMessageEvent, state: T_State) -> Result:
user_id = event.user_id
user = DBUser(user_id=user_id)
skill_name = state['skill_name']
_res = user.skill_del(skill=DBSkill(name=skill_name))
Expand All @@ -266,8 +267,8 @@ async def user_skill_del(bot: Bot, event: Event, state: T_State) -> Result:
return result


async def user_skill_clear(bot: Bot, event: Event, state: T_State) -> Result:
user_id = event.dict().get('user_id')
async def user_skill_clear(bot: Bot, event: GroupMessageEvent, state: T_State) -> Result:
user_id = event.user_id
user = DBUser(user_id=user_id)
_res = user.skill_clear()
if _res.success():
Expand Down
Loading

0 comments on commit 5446af7

Please sign in to comment.