Skip to content

Commit

Permalink
多项改进
Browse files Browse the repository at this point in the history
+ Telegram支持图文流
+ Onebot屏蔽因网络状况不好产生的空消息
+ QQ频道官方接口采用Ark
+ 尝试引入lxml
  • Loading branch information
lunzhiPenxil committed Dec 13, 2021
1 parent 42a6581 commit 9df13e4
Show file tree
Hide file tree
Showing 5 changed files with 201 additions and 31 deletions.
4 changes: 4 additions & 0 deletions OlivOS/hook.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,8 @@
@Desc : None
'''

#pillow
from PIL import Image

#lxml
from lxml import etree
2 changes: 2 additions & 0 deletions OlivOS/onebotSDK.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,8 @@ def get_Event_from_SDK(target_event):
target_event.data.extend['sub_self_id'] = target_event.sdk_event.json['self_tiny_id']
if target_event.sdk_event.json['user_id'] == target_event.sdk_event.json['self_tiny_id']:
target_event.active = False
if target_event.data.raw_message == '':
target_event.active = False
elif target_event.base_info['type'] == 'notice':
if target_event.sdk_event.json['notice_type'] == 'group_upload':
target_event.active = True
Expand Down
23 changes: 19 additions & 4 deletions OlivOS/qqGuildSDK.py
Original file line number Diff line number Diff line change
Expand Up @@ -399,8 +399,23 @@ def send_msg(target_event, chat_id, message, reply_msg_id = None):
this_msg = API.sendMessage(get_SDK_bot_info_from_Event(target_event))
this_msg.metadata.channel_id = chat_id
this_msg.data.msg_id = reply_msg_id
this_msg.data.content = ''
res = ''
for message_this in message.data:
this_msg.data.content += message_this.OP()
if this_msg.data.content != '':
this_msg.do_api()
if type(message_this) == OlivOS.messageAPI.PARA.text:
res += message_this.OP()
res_list = []
for res_this in res.split('\n'):
res_list.append({
'name': res_this,
'value': ''
})
this_msg.data.embed = {
'prompt': res,
'fields': res_list
}
this_msg.do_api()
#this_msg.data.content = ''
#for message_this in message.data:
# this_msg.data.content += message_this.OP()
#if this_msg.data.content != '':
# this_msg.do_api()
202 changes: 175 additions & 27 deletions OlivOS/telegramSDK.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,29 +156,69 @@ def get_Event_from_SDK(target_event):
target_event.platform['sdk'] = target_event.sdk_event.platform['sdk']
target_event.platform['platform'] = target_event.sdk_event.platform['platform']
target_event.platform['model'] = target_event.sdk_event.platform['model']
target_event.plugin_info['message_mode_rx'] = 'old_string'
target_event.plugin_info['message_mode_rx'] = 'olivos_para'
if checkByListAnd([
not target_event.active,
checkInDictSafe('message', target_event.sdk_event.json, []),
checkInDictSafe('text', target_event.sdk_event.json, ['message']),
checkInDictSafe('chat', target_event.sdk_event.json, ['message']),
checkInDictSafe('type', target_event.sdk_event.json, ['message', 'chat']),
checkInDictSafe('message_id', target_event.sdk_event.json, ['message']),
checkInDictSafe('from', target_event.sdk_event.json, ['message']),
checkInDictSafe('first_name', target_event.sdk_event.json, ['message', 'from']),
checkEquelInDictSafe('private', target_event.sdk_event.json, ['message', 'chat', 'type'])
]):
target_event.active = True
message_obj = None
if checkByListAnd([
checkInDictSafe('text', target_event.sdk_event.json, ['message'])
]):
message_obj = OlivOS.messageAPI.Message_templet(
'old_string',
target_event.sdk_event.json['message']['text']
)
message_obj.mode_rx = target_event.plugin_info['message_mode_rx']
message_obj.data_raw = message_obj.data.copy()
target_event.active = True
elif checkByListAnd([
checkInDictSafe('photo', target_event.sdk_event.json, ['message'])
]):
message_list = []
if type(target_event.sdk_event.json['message']['photo']) == list:
message_list.append(
OlivOS.messageAPI.PARA.image(
target_event.sdk_event.json['message']['photo'][0]['file_id']
)
)
message_obj = OlivOS.messageAPI.Message_templet(
'olivos_para',
message_list
)
target_event.active = True
elif checkByListAnd([
checkInDictSafe('sticker', target_event.sdk_event.json, ['message'])
]):
message_list = []
message_list.append(
OlivOS.messageAPI.PARA.image(
target_event.sdk_event.json['message']['sticker']['file_id']
)
)
message_obj = OlivOS.messageAPI.Message_templet(
'olivos_para',
message_list
)
target_event.active = True
if not target_event.active:
return target_event.active
target_event.plugin_info['func_type'] = 'private_message'
target_event.data = target_event.private_message(
target_event.sdk_event.json['message']['from']['id'],
target_event.sdk_event.json['message']['text'],
message_obj,
'friend'
)
target_event.data.message_sdk = OlivOS.messageAPI.Message_templet('old_string', target_event.sdk_event.json['message']['text'])
target_event.data.message_sdk = message_obj
target_event.data.message_id = target_event.sdk_event.json['message']['message_id']
target_event.data.raw_message = target_event.sdk_event.json['message']['text']
target_event.data.raw_message_sdk = OlivOS.messageAPI.Message_templet('old_string', target_event.sdk_event.json['message']['text'])
target_event.data.raw_message = message_obj
target_event.data.raw_message_sdk = message_obj
target_event.data.font = None
target_event.data.sender['user_id'] = target_event.sdk_event.json['message']['from']['id']
target_event.data.sender['nickname'] = target_event.sdk_event.json['message']['from']['first_name']
Expand All @@ -188,7 +228,6 @@ def get_Event_from_SDK(target_event):
not target_event.active,
'message' in target_event.sdk_event.json,
checkInDictSafe('message', target_event.sdk_event.json, []),
checkInDictSafe('text', target_event.sdk_event.json, ['message']),
checkInDictSafe('chat', target_event.sdk_event.json, ['message']),
checkInDictSafe('type', target_event.sdk_event.json, ['message', 'chat']),
checkInDictSafe('message_id', target_event.sdk_event.json, ['message']),
Expand All @@ -197,18 +236,60 @@ def get_Event_from_SDK(target_event):
checkInDictSafe('first_name', target_event.sdk_event.json, ['message', 'from']),
checkEquelInDictSafe('group', target_event.sdk_event.json, ['message', 'chat', 'type'])
]):
message_obj = None
if checkByListAnd([
checkInDictSafe('text', target_event.sdk_event.json, ['message'])
]):
message_obj = OlivOS.messageAPI.Message_templet(
'old_string',
target_event.sdk_event.json['message']['text']
)
message_obj.mode_rx = target_event.plugin_info['message_mode_rx']
message_obj.data_raw = message_obj.data.copy()
target_event.active = True
elif checkByListAnd([
checkInDictSafe('photo', target_event.sdk_event.json, ['message'])
]):
message_list = []
if type(target_event.sdk_event.json['message']['photo']) == list:
message_list.append(
OlivOS.messageAPI.PARA.image(
target_event.sdk_event.json['message']['photo'][0]['file_id']
)
)
message_obj = OlivOS.messageAPI.Message_templet(
'olivos_para',
message_list
)
target_event.active = True
elif checkByListAnd([
checkInDictSafe('sticker', target_event.sdk_event.json, ['message'])
]):
message_list = []
message_list.append(
OlivOS.messageAPI.PARA.image(
target_event.sdk_event.json['message']['sticker']['file_id']
)
)
message_obj = OlivOS.messageAPI.Message_templet(
'olivos_para',
message_list
)
target_event.active = True
else:
return target_event.active
target_event.active = True
target_event.plugin_info['func_type'] = 'group_message'
target_event.data = target_event.group_message(
target_event.sdk_event.json['message']['chat']['id'],
target_event.sdk_event.json['message']['from']['id'],
target_event.sdk_event.json['message']['text'],
message_obj,
'group'
)
target_event.data.message_sdk = OlivOS.messageAPI.Message_templet('old_string', target_event.sdk_event.json['message']['text'])
target_event.data.message_sdk = message_obj
target_event.data.message_id = target_event.sdk_event.json['message']['message_id']
target_event.data.raw_message = target_event.sdk_event.json['message']['text']
target_event.data.raw_message_sdk = OlivOS.messageAPI.Message_templet('old_string', target_event.sdk_event.json['message']['text'])
target_event.data.raw_message = message_obj
target_event.data.raw_message_sdk = message_obj
target_event.data.font = None
target_event.data.sender['user_id'] = target_event.sdk_event.json['message']['from']['id']
target_event.data.sender['nickname'] = target_event.sdk_event.json['message']['from']['first_name']
Expand All @@ -218,7 +299,6 @@ def get_Event_from_SDK(target_event):
not target_event.active,
'message' in target_event.sdk_event.json,
checkInDictSafe('message', target_event.sdk_event.json, []),
checkInDictSafe('text', target_event.sdk_event.json, ['message']),
checkInDictSafe('chat', target_event.sdk_event.json, ['message']),
checkInDictSafe('type', target_event.sdk_event.json, ['message', 'chat']),
checkInDictSafe('message_id', target_event.sdk_event.json, ['message']),
Expand All @@ -227,18 +307,60 @@ def get_Event_from_SDK(target_event):
checkInDictSafe('first_name', target_event.sdk_event.json, ['message', 'from']),
checkEquelInDictSafe('supergroup', target_event.sdk_event.json, ['message', 'chat', 'type'])
]):
message_obj = None
if checkByListAnd([
checkInDictSafe('text', target_event.sdk_event.json, ['message'])
]):
message_obj = OlivOS.messageAPI.Message_templet(
'old_string',
target_event.sdk_event.json['message']['text']
)
message_obj.mode_rx = target_event.plugin_info['message_mode_rx']
message_obj.data_raw = message_obj.data.copy()
target_event.active = True
elif checkByListAnd([
checkInDictSafe('photo', target_event.sdk_event.json, ['message'])
]):
message_list = []
if type(target_event.sdk_event.json['message']['photo']) == list:
message_list.append(
OlivOS.messageAPI.PARA.image(
target_event.sdk_event.json['message']['photo'][0]['file_id']
)
)
message_obj = OlivOS.messageAPI.Message_templet(
'olivos_para',
message_list
)
target_event.active = True
elif checkByListAnd([
checkInDictSafe('sticker', target_event.sdk_event.json, ['message'])
]):
message_list = []
message_list.append(
OlivOS.messageAPI.PARA.image(
target_event.sdk_event.json['message']['sticker']['file_id']
)
)
message_obj = OlivOS.messageAPI.Message_templet(
'olivos_para',
message_list
)
target_event.active = True
else:
return target_event.active
target_event.active = True
target_event.plugin_info['func_type'] = 'group_message'
target_event.data = target_event.group_message(
target_event.sdk_event.json['message']['chat']['id'],
target_event.sdk_event.json['message']['from']['id'],
target_event.sdk_event.json['message']['text'],
message_obj,
'group'
)
target_event.data.message_sdk = OlivOS.messageAPI.Message_templet('old_string', target_event.sdk_event.json['message']['text'])
target_event.data.message_sdk = message_obj
target_event.data.message_id = target_event.sdk_event.json['message']['message_id']
target_event.data.raw_message = target_event.sdk_event.json['message']['text']
target_event.data.raw_message_sdk = OlivOS.messageAPI.Message_templet('old_string', target_event.sdk_event.json['message']['text'])
target_event.data.raw_message = message_obj
target_event.data.raw_message_sdk = message_obj
target_event.data.font = None
target_event.data.sender['user_id'] = target_event.sdk_event.json['message']['from']['id']
target_event.data.sender['nickname'] = target_event.sdk_event.json['message']['from']['first_name']
Expand All @@ -250,21 +372,34 @@ def get_Event_from_SDK(target_event):
class event_action(object):
def send_msg(target_event, chat_id, message):
this_msg = API.sendMessage(get_SDK_bot_info_from_Event(target_event))
this_msg_image = API.sendPhoto(get_SDK_bot_info_from_Event(target_event))
this_msg.data.chat_id = chat_id
this_msg.data.text = message
this_msg.do_api()
this_msg_image.data.chat_id = chat_id
this_msg.data.text = ''
flag_now_type = 'string'
if message != None:
if type(message.data) == list:
for message_this in message.data:
if type(message_this) == OlivOS.messageAPI.PARA.image:
if flag_now_type != 'image':
if this_msg.data.text != '':
this_msg.do_api()
this_msg.data.text = ''
this_msg_image.data.photo = message_this.data['file']
this_msg_image.do_api()
flag_now_type = 'image'
elif type(message_this) == OlivOS.messageAPI.PARA.text:
this_msg.data.text += message_this.OP()
flag_now_type = 'string'
if flag_now_type != 'image':
if this_msg.data.text != '':
this_msg.do_api()

def send_private_msg(target_event, user_id, message):
this_msg = API.sendMessage(get_SDK_bot_info_from_Event(target_event))
this_msg.data.chat_id = user_id
this_msg.data.text = message
this_msg.do_api()
event_action.send_msg(target_event, user_id, message)

def send_group_msg(target_event, group_id, message):
this_msg = API.sendMessage(get_SDK_bot_info_from_Event(target_event))
this_msg.data.chat_id = group_id
this_msg.data.text = message
this_msg.do_api()
event_action.send_msg(target_event, group_id, message)

class api_templet(object):
def __init__(self):
Expand Down Expand Up @@ -342,3 +477,16 @@ def __init__(self):
self.disable_notification = False
self.reply_to_message_id = 0
self.allow_sending_without_reply = True

class sendPhoto(api_templet):
def __init__(self, bot_info = None):
api_templet.__init__(self)
self.bot_info = bot_info
self.data = self.data_T()
self.node_ext = 'sendPhoto'
self.res = None

class data_T(object):
def __init__(self):
self.chat_id = 0
self.photo = ''
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ pybase64
websockets
websocket-client
pillow
lxml

0 comments on commit 9df13e4

Please sign in to comment.