Skip to content

Commit

Permalink
支持QQ频道
Browse files Browse the repository at this point in the history
  • Loading branch information
lunzhiPenxil committed Nov 17, 2021
1 parent 46b28a1 commit 37116d9
Show file tree
Hide file tree
Showing 5 changed files with 92 additions and 16 deletions.
55 changes: 44 additions & 11 deletions OlivOS/API.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,11 @@ def do_init_log(self):
['message', self.data.message]
])
elif self.plugin_info['func_type'] == 'group_message':
tmp_host_id = '-'
if self.data.extend['host_group_id'] != None:
tmp_host_id = str(self.data.extend['host_group_id'])
tmp_globalMetaTableTemp_patch = OlivOS.metadataAPI.getPairMapping([
['host_id', tmp_host_id],
['group_id', self.data.group_id],
['nickname', self.data.sender['nickname']],
['user_id', self.data.user_id],
Expand Down Expand Up @@ -498,7 +502,14 @@ def __reply(self, message, flag_log = True):
elif checkByListOrEqual(
self.plugin_info['func_type'],
[
'group_message',
'group_message'
]
):
self.__send('group', self.data.group_id, tmp_message, host_id = self.data.extend['host_group_id'], flag_log = False)
flag_type = 'group'
elif checkByListOrEqual(
self.plugin_info['func_type'],
[
'group_file_upload',
'group_admin',
'group_member_decrease',
Expand All @@ -509,7 +520,6 @@ def __reply(self, message, flag_log = True):
'group_honor',
'group_add_request',
'group_invite_request'

]
):
self.__send('group', self.data.group_id, tmp_message, flag_log = False)
Expand Down Expand Up @@ -539,6 +549,19 @@ def __reply(self, message, flag_log = True):
('reply', 'callback')
])
elif flag_type == 'group':
if checkByListOrEqual(
self.plugin_info['func_type'],
[
'group_message'
]
):
if self.data.extend['host_group_id'] != None:
self.log_func(2, 'Host(' + str(self.data.extend['host_group_id']) + ') Group(' + str(self.data.group_id) + '): ' + tmp_message_log, [
(self.platform['platform'], 'default'),
(self.plugin_info['name'], 'default'),
('reply', 'callback')
])
return
self.log_func(2, 'Group(' + str(self.data.group_id) + '): ' + tmp_message_log, [
(self.platform['platform'], 'default'),
(self.plugin_info['name'], 'default'),
Expand All @@ -552,7 +575,7 @@ def reply(self, message, flag_log = True, remote = False):
self.__reply(message, flag_log = True)


def __send(self, send_type, target_id, message, flag_log = True):
def __send(self, send_type, target_id, message, host_id = None, flag_log = True):
flag_type = send_type
tmp_message = None
tmp_message_obj = None
Expand All @@ -564,7 +587,10 @@ def __send(self, send_type, target_id, message, flag_log = True):
if flag_type == 'private':
OlivOS.onebotSDK.event_action.send_private_msg(self, target_id, tmp_message)
elif flag_type == 'group':
OlivOS.onebotSDK.event_action.send_group_msg(self, target_id, tmp_message)
if host_id != None:
OlivOS.onebotSDK.event_action.send_guild_channel_msg(self, host_id, target_id, tmp_message)
else:
OlivOS.onebotSDK.event_action.send_group_msg(self, target_id, tmp_message)
elif self.platform['sdk'] == 'telegram_poll':
OlivOS.telegramSDK.event_action.send_msg(self, target_id, tmp_message)
elif self.platform['sdk'] == 'fanbook_poll':
Expand Down Expand Up @@ -596,17 +622,24 @@ def __send(self, send_type, target_id, message, flag_log = True):
('send', 'callback')
])
elif flag_type == 'group':
self.log_func(2, 'Group(' + str(target_id) + '): ' + tmp_message_log, [
(self.platform['platform'], 'default'),
(self.plugin_info['name'], 'default'),
('send', 'callback')
])
if host_id != None:
self.log_func(2, 'Host(' + str(host_id) + ') Group(' + str(target_id) + '): ' + tmp_message_log, [
(self.platform['platform'], 'default'),
(self.plugin_info['name'], 'default'),
('send', 'callback')
])
else:
self.log_func(2, 'Group(' + str(target_id) + '): ' + tmp_message_log, [
(self.platform['platform'], 'default'),
(self.plugin_info['name'], 'default'),
('send', 'callback')
])

def send(self, send_type, target_id, message, flag_log = True, remote = False):
def send(self, send_type, target_id, message, host_id = None, flag_log = True, remote = False):
if remote:
pass
else:
self.__send(send_type, target_id, message, flag_log = True)
self.__send(send_type, target_id, message, host_id = host_id, flag_log = True)

@callbackLogger('delete_msg')
def __delete_msg(self, message_id, flag_log = True):
Expand Down
6 changes: 4 additions & 2 deletions OlivOS/libEXEModelAPI.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ def __init__(self, Proc_name, scan_interval = 0.001, dead_interval = 1, rx_queue
self.Proc_config['target_proc'] = target_proc

def run(self):
while True:
flag_run = True
while flag_run:
releaseDir('./lib')
if not os.path.exists('./lib/go-cqhttp.exe'):
self.log(3, 'OlivOS libEXEModel server [' + self.Proc_name + '] can`t found target lib')
Expand All @@ -64,10 +65,11 @@ def run(self):
if self.Proc_data['bot_info_dict'].platform['model'] == 'gocqhttp' or self.Proc_data['bot_info_dict'].platform['model'] == 'gocqhttp_show':
self.log(2, 'OlivOS libEXEModel server [' + self.Proc_name + '] will run under visiable mode')
subprocess.call(
"start /wait ..\\..\\..\\lib\\go-cqhttp.exe faststart",
"start cmd /K ..\\..\\..\\lib\\go-cqhttp.exe faststart",
shell = True,
cwd = '.\\conf\\gocqhttp\\' + self.Proc_data['bot_info_dict'].hash
)
flag_run = False


class goTypeConfig(object):
Expand Down
3 changes: 2 additions & 1 deletion OlivOS/metadataAPI.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ def getPairMapping(pair_list = []):
'message_id': 'N/A',
'user_id': 'N/A',
'group_id': 'N/A',
'host_id': 'N/A',
'operator_id': 'N/A',
'target_id': 'N/A',
'name': 'N/A',
Expand All @@ -61,7 +62,7 @@ def getPairMapping(pair_list = []):

globalMetaTable = {
'event_private_message_log': 'User[{nickname}]({user_id}) : {message}',
'event_group_message_log': 'Group({group_id}) User[{nickname}]({user_id}) : {message}',
'event_group_message_log': 'Host({host_id}) Group({group_id}) User[{nickname}]({user_id}) : {message}',
'event_group_file_upload_log': 'Group({group_id}) User({user_id}) : {name}',
'event_group_admin_log': 'Group({group_id}) User({user_id}) Action({action})',
'event_group_member_decrease_log': 'Group({group_id}) User({user_id}) <- Operator({operator_id}) Action({action})',
Expand Down
4 changes: 2 additions & 2 deletions OlivOS/multiLoginUIAPI.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,8 +258,8 @@ def __init__(self, action, Account_data, hash_key = None, edit_commit_callback =
self.UIData['edit_root_Combobox_dict']['platform_sdk_model_list']['qq'] = {}
self.UIData['edit_root_Combobox_dict']['platform_sdk_model_list']['qq']['onebot'] = [
'default',
'gocqhttp',
'gocqhttp_hide',
#'gocqhttp',
#'gocqhttp_hide',
'gocqhttp_show'
]
self.UIData['edit_root_Combobox_dict']['platform_sdk_model_list']['telegram'] = {}
Expand Down
40 changes: 40 additions & 0 deletions OlivOS/onebotSDK.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,19 @@ def get_Event_from_SDK(target_event):
target_event.data.raw_message_sdk = OlivOS.messageAPI.Message_templet('old_string', target_event.sdk_event.json['raw_message'])
target_event.data.font = target_event.sdk_event.json['font']
target_event.data.sender.update(target_event.sdk_event.json['sender'])
elif target_event.sdk_event.json['message_type'] == 'guild':
if target_event.sdk_event.json['sub_type'] == 'channel':
target_event.active = True
target_event.plugin_info['func_type'] = 'group_message'
target_event.data = target_event.group_message(target_event.sdk_event.json['channel_id'], target_event.sdk_event.json['user_id'], target_event.sdk_event.json['message'], target_event.sdk_event.json['sub_type'])
target_event.data.message_sdk = OlivOS.messageAPI.Message_templet('old_string', target_event.sdk_event.json['message'])
target_event.data.message_id = target_event.sdk_event.json['message_id']
target_event.data.raw_message = target_event.sdk_event.json['message']
target_event.data.raw_message_sdk = OlivOS.messageAPI.Message_templet('old_string', target_event.sdk_event.json['message'])
target_event.data.font = None
target_event.data.sender.update(target_event.sdk_event.json['sender'])
if 'guild_id' in target_event.sdk_event.json != None:
target_event.data.extend['host_group_id'] = target_event.sdk_event.json['guild_id']
elif target_event.base_info['type'] == 'notice':
if target_event.sdk_event.json['notice_type'] == 'group_upload':
target_event.active = True
Expand Down Expand Up @@ -608,6 +621,16 @@ def get_version_info(target_event):
res_data['data']['os'] = init_api_do_mapping_for_dict(raw_obj, ['runtime_os'], str)
return res_data

#以下为 go-cqhttp v1.0.0-beta8-fix1 引入的试验性接口

def send_guild_channel_msg(target_event, guild_id, channel_id, message):
this_msg = api.send_guild_channel_msg(get_SDK_bot_info_from_Event(target_event))
this_msg.data.guild_id = guild_id
this_msg.data.channel_id = channel_id
this_msg.data.message = message
this_msg.do_api()


def init_api_json(raw_str):
res_data = None
tmp_obj = None
Expand Down Expand Up @@ -1196,3 +1219,20 @@ def __init__(self, bot_info=None):
class data_T(object):
def __init__(self):
self.default = None


#以下为 go-cqhttp v1.0.0-beta8-fix1 引入的试验性接口

class send_guild_channel_msg(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 = 'send_guild_channel_msg'
self.res = None

class data_T(object):
def __init__(self):
self.guild_id = -1
self.channel_id = -1
self.message = ''

0 comments on commit 37116d9

Please sign in to comment.