mirror of
https://github.com/LiteyukiStudio/LiteyukiBot.git
synced 2024-11-22 14:27:38 +08:00
使用satori时维护一个有昵称的用户列表
get_plugin_session_enable 判断当前使用的适配器
This commit is contained in:
parent
90e7a90bcf
commit
24722447da
3
.gitignore
vendored
3
.gitignore
vendored
@ -34,4 +34,5 @@ docs/.vuepress/dist/
|
|||||||
prompt.txt
|
prompt.txt
|
||||||
|
|
||||||
# js
|
# js
|
||||||
**/echarts.js
|
**/echarts.js
|
||||||
|
.env
|
||||||
|
@ -5,6 +5,7 @@ from typing import Any
|
|||||||
import nonebot
|
import nonebot
|
||||||
import pip
|
import pip
|
||||||
from nonebot import Bot, get_driver, require
|
from nonebot import Bot, get_driver, require
|
||||||
|
from nonebot.adapters import satori
|
||||||
from nonebot.adapters.onebot.v11 import Message, escape, unescape
|
from nonebot.adapters.onebot.v11 import Message, escape, unescape
|
||||||
from nonebot.exception import MockApiException
|
from nonebot.exception import MockApiException
|
||||||
from nonebot.internal.matcher import Matcher
|
from nonebot.internal.matcher import Matcher
|
||||||
@ -16,6 +17,7 @@ from liteyuki.utils.base.language import get_user_lang
|
|||||||
from liteyuki.utils.base.ly_typing import T_Bot, T_MessageEvent
|
from liteyuki.utils.base.ly_typing import T_Bot, T_MessageEvent
|
||||||
from liteyuki.utils.message.message import MarkdownMessage as md, broadcast_to_superusers
|
from liteyuki.utils.message.message import MarkdownMessage as md, broadcast_to_superusers
|
||||||
from liteyuki.utils.base.reloader import Reloader
|
from liteyuki.utils.base.reloader import Reloader
|
||||||
|
from liteyuki.utils import satori_utils
|
||||||
from .api import update_liteyuki
|
from .api import update_liteyuki
|
||||||
|
|
||||||
require("nonebot_plugin_alconna")
|
require("nonebot_plugin_alconna")
|
||||||
@ -269,6 +271,8 @@ async def on_shutdown():
|
|||||||
@driver.on_bot_connect
|
@driver.on_bot_connect
|
||||||
async def _(bot: T_Bot):
|
async def _(bot: T_Bot):
|
||||||
temp_data = common_db.where_one(TempConfig(), default=TempConfig())
|
temp_data = common_db.where_one(TempConfig(), default=TempConfig())
|
||||||
|
if isinstance(bot,satori.Bot):
|
||||||
|
await satori_utils.user_infos.load_friends(bot)
|
||||||
# 用于重启计时
|
# 用于重启计时
|
||||||
if temp_data.data.get("reload", False):
|
if temp_data.data.get("reload", False):
|
||||||
temp_data.data["reload"] = False
|
temp_data.data["reload"] = False
|
||||||
|
@ -3,6 +3,7 @@ from typing import Optional
|
|||||||
|
|
||||||
import aiofiles
|
import aiofiles
|
||||||
import nonebot.plugin
|
import nonebot.plugin
|
||||||
|
from nonebot.adapters import satori
|
||||||
|
|
||||||
from liteyuki.utils.base.data import LiteModel
|
from liteyuki.utils.base.data import LiteModel
|
||||||
from liteyuki.utils.base.data_manager import GlobalPlugin, Group, User, group_db, plugin_db, user_db
|
from liteyuki.utils.base.data_manager import GlobalPlugin, Group, User, group_db, plugin_db, user_db
|
||||||
@ -95,16 +96,23 @@ def get_plugin_session_enable(event: T_MessageEvent, plugin_name: str) -> bool:
|
|||||||
Returns:
|
Returns:
|
||||||
bool: 插件当前状态
|
bool: 插件当前状态
|
||||||
"""
|
"""
|
||||||
if event.message_type == "group":
|
if isinstance(event, satori.event.Event):
|
||||||
group_id = str(event.group_id)
|
if event.guild is not None:
|
||||||
|
message_type = "group"
|
||||||
|
else:
|
||||||
|
message_type = "private"
|
||||||
|
else:
|
||||||
|
message_type = event.message_type
|
||||||
|
if message_type == "group":
|
||||||
|
group_id = str(event.guild.id if isinstance(event, satori.event.Event) else event.group_id)
|
||||||
if group_id not in __group_data:
|
if group_id not in __group_data:
|
||||||
group: Group = group_db.where_one(Group(), "group_id = ?", group_id, default=Group(group_id=group_id))
|
group: Group = group_db.where_one(Group(), "group_id = ?", group_id, default=Group(group_id=group_id))
|
||||||
__group_data[str(event.group_id)] = group
|
__group_data[str(group_id)] = group
|
||||||
|
|
||||||
session = __group_data[group_id]
|
session = __group_data[group_id]
|
||||||
else:
|
else:
|
||||||
# session: User = user_db.first(User(), "user_id = ?", event.user_id, default=User(user_id=str(event.user_id)))
|
# session: User = user_db.first(User(), "user_id = ?", event.user_id, default=User(user_id=str(event.user_id)))
|
||||||
user_id = str(event.user_id)
|
user_id = str(event.user.id if isinstance(event, satori.event.Event) else event.user_id)
|
||||||
if user_id not in __user_data:
|
if user_id not in __user_data:
|
||||||
user: User = user_db.where_one(User(), "user_id = ?", user_id, default=User(user_id=user_id))
|
user: User = user_db.where_one(User(), "user_id = ?", user_id, default=User(user_id=user_id))
|
||||||
__user_data[user_id] = user
|
__user_data[user_id] = user
|
||||||
@ -132,7 +140,8 @@ def set_plugin_session_enable(event: T_MessageEvent, plugin_name: str, enable: b
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
if event.message_type == "group":
|
if event.message_type == "group":
|
||||||
session = group_db.where_one(Group(), "group_id = ?", str(event.group_id), default=Group(group_id=str(event.group_id)))
|
session = group_db.where_one(Group(), "group_id = ?", str(event.group_id),
|
||||||
|
default=Group(group_id=str(event.group_id)))
|
||||||
else:
|
else:
|
||||||
session = user_db.where_one(User(), "user_id = ?", str(event.user_id), default=User(user_id=str(event.user_id)))
|
session = user_db.where_one(User(), "user_id = ?", str(event.user_id), default=User(user_id=str(event.user_id)))
|
||||||
default_enable = get_plugin_default_enable(plugin_name)
|
default_enable = get_plugin_default_enable(plugin_name)
|
||||||
|
16
liteyuki/plugins/liteyuki_satori_user_info/__init__.py
Normal file
16
liteyuki/plugins/liteyuki_satori_user_info/__init__.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
from nonebot.plugin import PluginMetadata
|
||||||
|
from .auto_update import *
|
||||||
|
|
||||||
|
__author__ = "expliyh"
|
||||||
|
__plugin_meta__ = PluginMetadata(
|
||||||
|
name="Satori 用户数据自动更新(临时措施)",
|
||||||
|
description="",
|
||||||
|
usage="",
|
||||||
|
type="application",
|
||||||
|
homepage="https://github.com/snowykami/LiteyukiBot",
|
||||||
|
extra={
|
||||||
|
"liteyuki": True,
|
||||||
|
"toggleable" : True,
|
||||||
|
"default_enable" : True,
|
||||||
|
}
|
||||||
|
)
|
16
liteyuki/plugins/liteyuki_satori_user_info/auto_update.py
Normal file
16
liteyuki/plugins/liteyuki_satori_user_info/auto_update.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
from liteyuki.utils import satori_utils
|
||||||
|
from nonebot.message import event_preprocessor
|
||||||
|
# from nonebot_plugin_alconna.typings import Event
|
||||||
|
from liteyuki.utils.base.ly_typing import T_MessageEvent
|
||||||
|
from liteyuki.utils import satori_utils
|
||||||
|
from nonebot.adapters import satori
|
||||||
|
from nonebot_plugin_alconna.typings import Event
|
||||||
|
|
||||||
|
|
||||||
|
@event_preprocessor
|
||||||
|
async def pre_handle(event: Event):
|
||||||
|
print("UPDATE_USER")
|
||||||
|
if isinstance(event, satori.MessageEvent):
|
||||||
|
if event.user.name is not None:
|
||||||
|
await satori_utils.user_infos.put(event.user)
|
||||||
|
print(event.user)
|
@ -4,7 +4,7 @@ from nonebot import require
|
|||||||
from nonebot.message import event_postprocessor
|
from nonebot.message import event_postprocessor
|
||||||
|
|
||||||
from liteyuki.utils.base.data import Database, LiteModel
|
from liteyuki.utils.base.data import Database, LiteModel
|
||||||
from liteyuki.utils.base.ly_typing import v11
|
from liteyuki.utils.base.ly_typing import v11, satori
|
||||||
|
|
||||||
from .common import MessageEventModel, msg_db
|
from .common import MessageEventModel, msg_db
|
||||||
|
|
||||||
@ -36,3 +36,26 @@ async def onebot_v11_event_monitor(bot: v11.Bot, event: v11.MessageEvent):
|
|||||||
message_type=event.message_type,
|
message_type=event.message_type,
|
||||||
)
|
)
|
||||||
msg_db.save(mem)
|
msg_db.save(mem)
|
||||||
|
|
||||||
|
|
||||||
|
async def satori_event_monitor(bot: satori.Bot, event: satori.MessageEvent):
|
||||||
|
if event.guild is not None:
|
||||||
|
event: satori.MessageEvent
|
||||||
|
group_id = str(event.guild.id)
|
||||||
|
else:
|
||||||
|
group_id = ""
|
||||||
|
|
||||||
|
mem = MessageEventModel(
|
||||||
|
time=int(time.time()),
|
||||||
|
bot_id=bot.self_id,
|
||||||
|
adapter="satori",
|
||||||
|
group_id=group_id,
|
||||||
|
user_id=str(event.user.id),
|
||||||
|
|
||||||
|
message_id=str(event.message.id),
|
||||||
|
|
||||||
|
message=event.message,
|
||||||
|
message_text=event.message.content,
|
||||||
|
message_type=event.message_type,
|
||||||
|
)
|
||||||
|
msg_db.save(mem)
|
||||||
|
@ -52,7 +52,6 @@ def get_uni_set() -> set:
|
|||||||
async def pre_handle(event: Event):
|
async def pre_handle(event: Event):
|
||||||
try:
|
try:
|
||||||
user_id = str(event.get_user_id())
|
user_id = str(event.get_user_id())
|
||||||
|
|
||||||
except:
|
except:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
from nonebot.adapters.onebot import v11, v12
|
from nonebot.adapters.onebot import v11, v12
|
||||||
|
from nonebot.adapters import satori
|
||||||
|
|
||||||
T_Bot = v11.Bot | v12.Bot
|
T_Bot = v11.Bot | v12.Bot | satori.Bot
|
||||||
T_GroupMessageEvent = v11.GroupMessageEvent | v12.GroupMessageEvent
|
T_GroupMessageEvent = v11.GroupMessageEvent | v12.GroupMessageEvent | satori.MessageEvent
|
||||||
T_PrivateMessageEvent = v11.PrivateMessageEvent | v12.PrivateMessageEvent
|
T_PrivateMessageEvent = v11.PrivateMessageEvent | v12.PrivateMessageEvent | satori.MessageEvent
|
||||||
T_MessageEvent = v11.MessageEvent | v12.MessageEvent
|
T_MessageEvent = v11.MessageEvent | v12.MessageEvent | satori.MessageEvent
|
||||||
T_Message = v11.Message | v12.Message
|
T_Message = v11.Message | v12.Message | satori.Message
|
||||||
|
1
liteyuki/utils/satori_utils/__init__.py
Normal file
1
liteyuki/utils/satori_utils/__init__.py
Normal file
@ -0,0 +1 @@
|
|||||||
|
from .user_info import user_infos
|
35
liteyuki/utils/satori_utils/user_info.py
Normal file
35
liteyuki/utils/satori_utils/user_info.py
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
from nonebot.adapters import satori
|
||||||
|
from nonebot.adapters.satori.models import User
|
||||||
|
|
||||||
|
|
||||||
|
class UserInfo:
|
||||||
|
user_infos: dict = {}
|
||||||
|
|
||||||
|
async def load_friends(self, bot: satori.Bot):
|
||||||
|
print("LoadFriends")
|
||||||
|
friend_response = await bot.friend_list()
|
||||||
|
while friend_response.next is not None:
|
||||||
|
for i in friend_response.data:
|
||||||
|
i: User = i
|
||||||
|
self.user_infos[str(i.id)] = i
|
||||||
|
friend_response = await bot.friend_list(next_token=friend_response.next)
|
||||||
|
|
||||||
|
for i in friend_response.data:
|
||||||
|
i: User = i
|
||||||
|
self.user_infos[str(i.id)] = i
|
||||||
|
print(i)
|
||||||
|
|
||||||
|
async def get(self, uid: int | str) -> User | None:
|
||||||
|
try:
|
||||||
|
return self.user_infos[str(uid)]
|
||||||
|
except KeyError:
|
||||||
|
return None
|
||||||
|
|
||||||
|
async def put(self, user: User):
|
||||||
|
self.user_infos[str(user.id)] = user
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
user_infos = UserInfo()
|
3
main.py
3
main.py
@ -1,5 +1,6 @@
|
|||||||
import nonebot
|
import nonebot
|
||||||
from nonebot.adapters.onebot import v11, v12
|
from nonebot.adapters.onebot import v11, v12
|
||||||
|
from nonebot.adapters import satori
|
||||||
from liteyuki.utils import init
|
from liteyuki.utils import init
|
||||||
from liteyuki.utils.base.config import load_from_yaml
|
from liteyuki.utils.base.config import load_from_yaml
|
||||||
from liteyuki.utils.base.data_manager import StoredConfig, common_db
|
from liteyuki.utils.base.data_manager import StoredConfig, common_db
|
||||||
@ -11,7 +12,7 @@ if __name__ == "__mp_main__":
|
|||||||
static_config = load_from_yaml("config.yml")
|
static_config = load_from_yaml("config.yml")
|
||||||
store_config.update(static_config)
|
store_config.update(static_config)
|
||||||
nonebot.init(**store_config)
|
nonebot.init(**store_config)
|
||||||
adapters = [v11.Adapter, v12.Adapter]
|
adapters = [v11.Adapter, v12.Adapter, satori.Adapter]
|
||||||
driver = nonebot.get_driver()
|
driver = nonebot.get_driver()
|
||||||
|
|
||||||
for adapter in adapters:
|
for adapter in adapters:
|
||||||
|
Loading…
Reference in New Issue
Block a user