zhenxun_bot/plugins/dialogue/__init__.py

168 lines
6.2 KiB
Python
Raw Normal View History

2021-05-20 19:21:05 +08:00
from nonebot import on_command
2022-02-19 18:20:19 +08:00
from nonebot.adapters.onebot.v11 import Bot, MessageEvent, Message, GroupMessageEvent
2021-05-20 19:21:05 +08:00
from nonebot.permission import SUPERUSER
2022-02-19 18:20:19 +08:00
from utils.utils import is_number, get_message_img
2021-07-30 21:21:51 +08:00
from utils.message_builder import image
2021-11-04 16:11:50 +08:00
from utils.message_builder import text as _text
2021-05-20 19:21:05 +08:00
from services.log import logger
2021-07-30 21:21:51 +08:00
from utils.message_builder import at
2022-02-19 18:20:19 +08:00
from nonebot.params import CommandArg
2021-05-20 19:21:05 +08:00
2021-10-03 14:24:07 +08:00
__zx_plugin_name__ = "联系管理员"
__plugin_usage__ = """
usage
有什么话想对管理员说嘛
指令
[滴滴滴]/滴滴滴- ?[文本] ?[图片]
示例滴滴滴- 我喜欢你
""".strip()
__plugin_superuser_usage__ = """
superuser usage
管理员对消息的回复
指令[以下qq与group均为乱打]
/t: 查看当前存储的消息
/t [qq] [group] [文本]: 在group回复指定用户
/t [qq] [文本]: 私聊用户
/t -1 [group] [文本]: 在group内发送消息
/t [id] [文本]: 回复指定id的对话id在 /t 中获取
示例/t 73747222 32848432 你好啊
示例/t 73747222 你好不好
示例/t -1 32848432 我不太好
示例/t 0 我收到你的话了
"""
__plugin_des__ = "跨越空间与时间跟管理员对话"
__plugin_cmd__ = [
"滴滴滴-/[滴滴滴] ?[文本] ?[图片]",
"/t [_superuser]",
"t [qq] [group] [文本] [_superuser]",
"/t [qq] [文本] [_superuser]",
"/t -1 [group] [_superuser]",
"/t [id] [文本] [_superuser]",
]
__plugin_type__ = ("联系管理员",)
__plugin_version__ = 0.1
__plugin_author__ = "HibiKier"
__plugin_settings__ = {
"level": 5,
"default_status": True,
"limit_superuser": False,
"cmd": ["滴滴滴-", "滴滴滴"],
}
2021-05-20 19:21:05 +08:00
2021-06-18 15:31:02 +08:00
dialogue_data = {}
dialogue = on_command("[滴滴滴]", aliases={"滴滴滴-"}, priority=5, block=True)
2021-07-30 21:21:51 +08:00
reply = on_command("/t", priority=1, permission=SUPERUSER, block=True)
2021-05-20 19:21:05 +08:00
@dialogue.handle()
2022-02-19 18:20:19 +08:00
async def _(bot: Bot, event: MessageEvent, arg: Message = CommandArg()):
text = arg.extract_plain_text().strip()
2021-11-04 16:11:50 +08:00
img_msg = _text("")
2022-01-16 14:52:50 +08:00
for img in get_message_img(event.json()):
2021-06-18 15:31:02 +08:00
img_msg += image(img)
2021-12-16 11:16:28 +08:00
if not text and not img_msg:
2021-05-20 19:21:05 +08:00
await dialogue.send("请发送[滴滴滴]+您要说的内容~", at_sender=True)
else:
2021-07-30 21:21:51 +08:00
group_id = 0
group_name = "None"
nickname = event.sender.nickname
if isinstance(event, GroupMessageEvent):
2021-05-20 19:21:05 +08:00
group_id = event.group_id
2021-07-30 21:21:51 +08:00
group_name = (await bot.get_group_info(group_id=event.group_id))[
"group_name"
]
2022-02-19 18:20:19 +08:00
nickname = event.sender.card or event.sender.nickname
for coffee in bot.config.superusers:
await bot.send_private_msg(
user_id=int(coffee),
message=_text(
f"*****一份交流报告*****\n"
f"昵称:{nickname}({event.user_id})\n"
f"群聊:{group_name}({group_id})\n"
f"消息:{text}"
)
+ img_msg,
2021-11-04 16:11:50 +08:00
)
2021-07-30 21:21:51 +08:00
await dialogue.send(
2021-11-04 16:11:50 +08:00
_text(f"您的话已发送至管理员!\n======\n{text}") + img_msg, at_sender=True
2021-07-30 21:21:51 +08:00
)
2021-06-18 15:31:02 +08:00
nickname = event.sender.nickname if event.sender.nickname else event.sender.card
2021-07-30 21:21:51 +08:00
dialogue_data[len(dialogue_data)] = {
"nickname": nickname,
"user_id": event.user_id,
"group_id": group_id,
"group_name": group_name,
2021-11-04 16:11:50 +08:00
"msg": _text(text) + img_msg,
2021-07-30 21:21:51 +08:00
}
2021-06-18 15:31:02 +08:00
# print(dialogue_data)
2022-02-19 18:20:19 +08:00
logger.info(f"Q{event.user_id}@群{group_id} 联系管理员text:{text}")
2021-05-20 19:21:05 +08:00
@reply.handle()
2022-02-19 18:20:19 +08:00
async def _(bot: Bot, event: MessageEvent, arg: Message = CommandArg()):
msg = arg.extract_plain_text().strip()
2021-06-18 15:31:02 +08:00
if not msg:
2021-07-30 21:21:51 +08:00
result = "*****待回复消息总览*****\n"
2021-06-18 15:31:02 +08:00
for key in dialogue_data.keys():
2021-07-30 21:21:51 +08:00
result += (
2021-10-03 14:24:07 +08:00
f"id{key}\n"
2021-07-30 21:21:51 +08:00
f'\t昵称:{dialogue_data[key]["nickname"]}({dialogue_data[key]["user_id"]})\n'
f'\t群群:{dialogue_data[key]["group_name"]}({dialogue_data[key]["group_id"]})\n'
f'\t消息:{dialogue_data[key]["msg"]}'
2021-10-03 14:24:07 +08:00
f"\n--------------------\n"
2021-07-30 21:21:51 +08:00
)
await reply.finish(Message(result[:-1]))
msg = msg.split()
text = ""
2021-06-18 15:31:02 +08:00
group_id = 0
user_id = -1
if is_number(msg[0]):
if len(msg[0]) < 3:
msg[0] = int(msg[0])
if msg[0] >= 0:
id_ = msg[0]
user_id = dialogue_data[id_]["user_id"]
group_id = dialogue_data[id_]["group_id"]
2022-01-16 14:52:50 +08:00
text = " ".join(msg[1:])
2021-06-18 21:44:52 +08:00
dialogue_data.pop(id_)
2021-06-18 15:31:02 +08:00
else:
user_id = 0
if is_number(msg[1]):
group_id = int(msg[1])
2022-02-09 20:05:49 +08:00
text = " ".join(msg[2:])
2021-06-18 15:31:02 +08:00
else:
2021-07-30 21:21:51 +08:00
await reply.finish("群号错误...", at_sender=True)
2021-06-18 15:31:02 +08:00
else:
user_id = int(msg[0])
if is_number(msg[1]) and len(msg[1]) > 5:
group_id = int(msg[1])
2022-01-16 14:52:50 +08:00
text = " ".join(msg[2:])
2021-06-18 15:31:02 +08:00
else:
group_id = 0
2022-01-16 14:52:50 +08:00
text = " ".join(msg[1:])
2021-05-20 19:21:05 +08:00
else:
2021-07-30 21:21:51 +08:00
await reply.finish("第一参数,请输入数字.....", at_sender=True)
2022-01-16 14:52:50 +08:00
for img in get_message_img(event.json()):
2021-06-18 15:31:02 +08:00
text += image(img)
2021-05-20 19:21:05 +08:00
if group_id:
2021-06-18 15:31:02 +08:00
if user_id:
2021-07-30 21:21:51 +08:00
await bot.send_group_msg(
group_id=group_id, message=at(user_id) + "\n管理员回复\n=======\n" + text
)
2021-06-18 15:31:02 +08:00
else:
await bot.send_group_msg(group_id=group_id, message=text)
2021-07-30 21:21:51 +08:00
await reply.finish("消息发送成功...", at_sender=True)
2021-05-20 19:21:05 +08:00
else:
2021-07-30 21:21:51 +08:00
if user_id in [qq["user_id"] for qq in await bot.get_friend_list()]:
await bot.send_private_msg(
user_id=user_id, message="管理员回复\n=======\n" + text
)
2021-05-20 19:21:05 +08:00
await reply.finish("发送成功", at_sender=True)
else:
2021-07-30 21:21:51 +08:00
await reply.send(
f"对象不是{list(bot.config.nickname)[0]}的好友...", at_sender=True
)