Initial /redact command implementation.
The command does nothing so far.
This commit is contained in:
parent
e5a4a7c793
commit
5aba3052fd
1 changed files with 101 additions and 3 deletions
|
@ -154,6 +154,9 @@ class PluginOptions:
|
||||||
self.redaction_type = RedactType.STRIKETHROUGH # type: RedactType
|
self.redaction_type = RedactType.STRIKETHROUGH # type: RedactType
|
||||||
self.look_server_buf = ServerBufferType.MERGE_CORE # type: ServerBufferType
|
self.look_server_buf = ServerBufferType.MERGE_CORE # type: ServerBufferType
|
||||||
|
|
||||||
|
self.redaction_comp_len = 50 # type: int
|
||||||
|
self.msg_redact = ""
|
||||||
|
|
||||||
self.options = dict() # type: Dict[unicode, weechat.config_option]
|
self.options = dict() # type: Dict[unicode, weechat.config_option]
|
||||||
|
|
||||||
|
|
||||||
|
@ -601,7 +604,7 @@ def matrix_handle_room_text_message(server, room_id, event):
|
||||||
msg_date = date_from_age(event['unsigned']['age'])
|
msg_date = date_from_age(event['unsigned']['age'])
|
||||||
|
|
||||||
# TODO if this is an initial sync tag the messages as backlog
|
# TODO if this is an initial sync tag the messages as backlog
|
||||||
tag = "nick_{a},matrix_id_{event_id},irc_privmsg,notify_message".format(
|
tag = "nick_{a},matrix_id_{event_id},matrix_message,notify_message".format(
|
||||||
a=msg_author, event_id=event_id)
|
a=msg_author, event_id=event_id)
|
||||||
|
|
||||||
buf = server.buffers[room_id]
|
buf = server.buffers[room_id]
|
||||||
|
@ -625,7 +628,7 @@ def matrix_handle_redacted_message(server, room_id, event):
|
||||||
|
|
||||||
msg_date = date_from_age(event['unsigned']['age'])
|
msg_date = date_from_age(event['unsigned']['age'])
|
||||||
|
|
||||||
tag = ("nick_{a},matrix_id_{event_id},irc_privmsg,matrix_redacted_msg,"
|
tag = ("nick_{a},matrix_id_{event_id},matrix_message,matrix_redacted,"
|
||||||
"notify_message").format(a=msg_author, event_id=event_id)
|
"notify_message").format(a=msg_author, event_id=event_id)
|
||||||
|
|
||||||
buf = server.buffers[room_id]
|
buf = server.buffers[room_id]
|
||||||
|
@ -754,7 +757,7 @@ def matrix_handle_message(
|
||||||
# so ignore it in the sync.
|
# so ignore it in the sync.
|
||||||
server.ignore_event_list.append(event_id)
|
server.ignore_event_list.append(event_id)
|
||||||
|
|
||||||
tag = "nick_{a},matrix_id_{event_id},irc_privmsg".format(
|
tag = "nick_{a},matrix_id_{event_id},matrix_message".format(
|
||||||
a=author, event_id=event_id)
|
a=author, event_id=event_id)
|
||||||
|
|
||||||
data = "{author}\t{msg}".format(author=author, msg=message)
|
data = "{author}\t{msg}".format(author=author, msg=message)
|
||||||
|
@ -1840,6 +1843,70 @@ def matrix_command_topic_cb(data, buffer, command):
|
||||||
return W.WEECHAT_RC_OK
|
return W.WEECHAT_RC_OK
|
||||||
|
|
||||||
|
|
||||||
|
def matrix_redact_command_cb(data, buffer, args):
|
||||||
|
W.prnt("", args)
|
||||||
|
return W.WEECHAT_RC_OK
|
||||||
|
|
||||||
|
|
||||||
|
def matrix_message_completion_cb(data, completion_item, buffer, completion):
|
||||||
|
own_lines = W.hdata_pointer(W.hdata_get('buffer'), buffer, 'own_lines')
|
||||||
|
if own_lines:
|
||||||
|
line = W.hdata_pointer(
|
||||||
|
W.hdata_get('lines'),
|
||||||
|
own_lines,
|
||||||
|
'last_line'
|
||||||
|
)
|
||||||
|
|
||||||
|
line_number = 1
|
||||||
|
|
||||||
|
while line:
|
||||||
|
line_data = W.hdata_pointer(
|
||||||
|
W.hdata_get('line'),
|
||||||
|
line,
|
||||||
|
'data'
|
||||||
|
)
|
||||||
|
|
||||||
|
if line_data:
|
||||||
|
message = W.hdata_string(W.hdata_get('line_data'), line_data,
|
||||||
|
'message')
|
||||||
|
tags_count = W.hdata_get_var_array_size(
|
||||||
|
W.hdata_get('line_data'),
|
||||||
|
line_data,
|
||||||
|
'tags_array'
|
||||||
|
)
|
||||||
|
|
||||||
|
tags = [
|
||||||
|
W.hdata_string(
|
||||||
|
W.hdata_get('line_data'),
|
||||||
|
line_data,
|
||||||
|
'%d|tags_array' % i
|
||||||
|
) for i in range(tags_count)]
|
||||||
|
|
||||||
|
# Only add non redacted user messages to the completion
|
||||||
|
if (message
|
||||||
|
and 'matrix_message' in tags
|
||||||
|
and 'matrix_redacted' not in tags):
|
||||||
|
|
||||||
|
if len(message) > GLOBAL_OPTIONS.redaction_comp_len + 2:
|
||||||
|
message = (
|
||||||
|
message[:GLOBAL_OPTIONS.redaction_comp_len]
|
||||||
|
+ '..')
|
||||||
|
|
||||||
|
item = ("{number}:\"{message}\"").format(
|
||||||
|
number=line_number,
|
||||||
|
message=message)
|
||||||
|
|
||||||
|
W.hook_completion_list_add(
|
||||||
|
completion,
|
||||||
|
item,
|
||||||
|
0,
|
||||||
|
weechat.WEECHAT_LIST_POS_END)
|
||||||
|
line_number += 1
|
||||||
|
|
||||||
|
line = W.hdata_move(W.hdata_get('line'), line, -1)
|
||||||
|
|
||||||
|
return W.WEECHAT_RC_OK
|
||||||
|
|
||||||
def init_hooks():
|
def init_hooks():
|
||||||
W.hook_completion(
|
W.hook_completion(
|
||||||
"matrix_server_commands",
|
"matrix_server_commands",
|
||||||
|
@ -1862,6 +1929,14 @@ def init_hooks():
|
||||||
""
|
""
|
||||||
)
|
)
|
||||||
|
|
||||||
|
W.hook_completion(
|
||||||
|
"matrix_messages",
|
||||||
|
"Matrix message completion",
|
||||||
|
"matrix_message_completion_cb",
|
||||||
|
""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
W.hook_command(
|
W.hook_command(
|
||||||
# Command name and short description
|
# Command name and short description
|
||||||
'matrix', 'Matrix chat protocol command',
|
'matrix', 'Matrix chat protocol command',
|
||||||
|
@ -1894,6 +1969,29 @@ def init_hooks():
|
||||||
# Function name
|
# Function name
|
||||||
'matrix_command_cb', '')
|
'matrix_command_cb', '')
|
||||||
|
|
||||||
|
W.hook_command(
|
||||||
|
# Command name and short description
|
||||||
|
'redact', 'redact messages',
|
||||||
|
# Synopsis
|
||||||
|
(
|
||||||
|
'<message-number>[:<"message-part">] [<reason>]'
|
||||||
|
),
|
||||||
|
# Description
|
||||||
|
(
|
||||||
|
"message-number: number of the message to redact (message numbers"
|
||||||
|
"\n start from the last recieved as "
|
||||||
|
"1 and count up)\n"
|
||||||
|
" message-part: a shortened part of the message\n"
|
||||||
|
" reason: the redaction reason\n"
|
||||||
|
),
|
||||||
|
# Completions
|
||||||
|
(
|
||||||
|
'%(matrix_messages)'
|
||||||
|
),
|
||||||
|
# Function name
|
||||||
|
'matrix_redact_command_cb', '')
|
||||||
|
|
||||||
|
|
||||||
W.hook_command_run('/topic', 'matrix_command_topic_cb', '')
|
W.hook_command_run('/topic', 'matrix_command_topic_cb', '')
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue