from typing import TYPE_CHECKING from typing_extensions import Literal if TYPE_CHECKING: from nonebot.adapters.onebot.v11 import GroupMessageEvent, PrivateMessageEvent def fake_group_message_event(**field) -> "GroupMessageEvent": from nonebot.adapters.onebot.v11 import GroupMessageEvent, Message from nonebot.adapters.onebot.v11.event import Sender from pydantic import create_model _Fake = create_model("_Fake", __base__=GroupMessageEvent) class FakeEvent(_Fake): time: int = 1000000 self_id: int = 1 post_type: Literal["message"] = "message" sub_type: str = "normal" user_id: int = 10 message_type: Literal["group"] = "group" group_id: int = 10000 message_id: int = 1 message: Message = Message("test") raw_message: str = "test" font: int = 0 sender: Sender = Sender( card="", nickname="test", role="member", ) to_me: bool = False class Config: extra = "forbid" return FakeEvent(**field) def fake_private_message_event(**field) -> "PrivateMessageEvent": from nonebot.adapters.onebot.v11 import Message, PrivateMessageEvent from nonebot.adapters.onebot.v11.event import Sender from pydantic import create_model _Fake = create_model("_Fake", __base__=PrivateMessageEvent) class FakeEvent(_Fake): time: int = 1000000 self_id: int = 1 post_type: Literal["message"] = "message" sub_type: str = "friend" user_id: int = 10 message_type: Literal["private"] = "private" message_id: int = 1 message: Message = Message("test") raw_message: str = "test" font: int = 0 sender: Sender = Sender(nickname="test") to_me: bool = False class Config: extra = "forbid" return FakeEvent(**field) from nonebot.adapters.onebot.v11.event import Sender fake_admin_user = Sender(nickname="test", role="admin") fake_superuser = Sender(user_id=10001, nickname="superuser") class BotReply: @staticmethod def add_reply_on_platform(platform_manager, common_platform): return ( "请输入想要订阅的平台,目前支持,请输入冒号左边的名称:\n" + "".join( [ "{}:{}\n".format( platform_name, platform_manager[platform_name].name ) for platform_name in common_platform ] ) + "要查看全部平台请输入:“全部”\n中止订阅过程请输入:“取消”" ) @staticmethod def add_reply_on_platform_input_allplatform(platform_manager): return "全部平台\n" + "\n".join( [ "{}:{}".format(platform_name, platform.name) for platform_name, platform in platform_manager.items() ] ) @staticmethod def add_reply_on_id_input_search(): search_url = "https://nonebot-bison.vercel.app/usage/#%E6%89%80%E6%94%AF%E6%8C%81%E5%B9%B3%E5%8F%B0%E7%9A%84-uid" search_title = "Bison所支持的平台UID" search_content = "查询相关平台的uid格式或获取方式" search_image = "https://s3.bmp.ovh/imgs/2022/03/ab3cc45d83bd3dd3.jpg" type = "share" data = { "url": search_url, "title": search_title, "content": search_content, "image": search_image, } msg = [type, data] return msg @staticmethod def add_reply_on_target_confirm(platform, name, id): return f"即将订阅的用户为:{platform} {name} {id}\n如有错误请输入“取消”重新订阅" @staticmethod def add_reply_on_cats(platform_manager, platform: str): return "请输入要订阅的类别,以空格分隔,支持的类别有:{}".format( " ".join(list(platform_manager[platform].categories.values())) ) @staticmethod def add_reply_on_cats_input_error(cat: str): return "不支持 {}".format(cat) @staticmethod def add_reply_subscribe_success(name): return "添加 {} 成功".format(name) add_reply_on_id_input_error = "id输入错误" add_reply_on_platform_input_error = "平台输入错误" add_reply_on_id = "请输入订阅用户的id:\n查询id获取方法请回复:“查询”" add_reply_on_tags = '请输入要订阅的tag,订阅所有tag输入"全部标签"' add_reply_abort = "已中止订阅"