aboutsummaryrefslogtreecommitdiffstats
path: root/wee_slack.py
Commit message (Collapse)AuthorAgeFilesLines
* Use True instead of "true" for "return_im" in requestsEric Wang2017-10-111-2/+2
|
* Fix errors when joining DMs and multiparty DMsEric Wang2017-10-101-2/+2
| | | | | | | | | | | - The DM error was caused by not specifying `return_im` (https://api.slack.com/methods/im.open#arguments) in the request which led to `unread_count_display` not being included in the response and a KeyError in `handle_imopen` - The MPDM error was caused by using "name" instead of "channel" for the channel ID (https://api.slack.com/methods/groups.info#arguments) in the request which led to an error response and a KeyError in `handle_groupsinfo`
* Merge pull request #443 from trygveaa/fix/topic-command-refactorTrygve Aaberge2017-10-091-42/+51
|\ | | | | fix: Make /topic behave the same way as on IRC
| * fix: Update topic property in channel when topic changesTrygve Aaberge2017-10-081-9/+12
| | | | | | | | | | I also changed the channel to only store the topic value, since that is the only part of the topic property we get from Slack that we use.
| * refactor: Split topic_command_cb and add testsTrygve Aaberge2017-10-081-16/+25
| | | | | | | | | | | | Split out the parts of topic_command_cb that's most interesting and easiest to test into parse_topic_command and add tests for that function.
| * fix: Make /topic behave the same way as on IRCTrygve Aaberge2017-09-251-35/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This refactors the topic command, and makes it behave the same way as it does on IRC. The fixes include: - `/topic` prints the topic instead of clearing it - `/topic #channel` prints the topic for that channel in that channels buffer instead of setting the topic to #channel - `/topic #channel [...]` for a channel that doesn't exist gives a proper error message The patch also removes some unused code, refactors the logic and removes the `/slack topic` command, since using `/topic` should suffice. The reason it returs WEECHAT_RC_OK_EAT when the channel isn't found, is so weechat doesn't print an error message such as: irc: command "topic" must be executed on irc buffer (server or channel) Fixes #405
* | Switch to thread buffer on open if configuredDavid Vo2017-10-061-0/+2
| | | | | | | | Obeys the switch_buffer_on_join setting on /thread.
* | refactor: Swap if conditions for performanceTrygve Aaberge2017-09-291-1/+1
| | | | | | | | Since startswith is faster than in, it's better to check that first.
* | Merge pull request #413 from auscompgeek/buffer-nameTrygve Aaberge2017-09-291-15/+18
|\ \ | | | | | | Make groups and MPDMs distinguishable by prefix
| * | Give MPDMs a short buffer name prefix of @David Vo2017-09-271-6/+3
| | |
| * | SlackMPDMChannel: Refactor name adjustmentDavid Vo2017-09-271-2/+6
| | |
| * | Give groups a configurable buffer name prefixDavid Vo2017-09-271-7/+9
| | |
* | | Merge pull request #441 from trygveaa/feat/support-input-set-unreadTrygve Aaberge2017-09-281-1/+21
|\ \ \ | |/ / |/| | Support `/input set unread` and `/input set_unread_current_buffer`
| * | feat: Add support for /input set_unread(_current_buffer)Trygve Aaberge2017-09-241-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | This hooks into the weechat commands `/input set_unread` and `/input set_unread_current_buffer` and implements them. For set_unread we iterate over all the channels and mark them as read. For set_unread_current_buffer we mark the current buffer as read. Fixes #323
| * | refactor: Set same signature for mark_read everywhereTrygve Aaberge2017-09-241-1/+1
| | | | | | | | | | | | | | | | | | | | | This changes the signature of mark_read in SlackTeam to match the one in SlackChannel. This is done so we can call mark_read on all the items in the list of buffers (which has both teams and channels), without checking if the items are channels.
| * | fix: Set new_messages in set_unread_count_displayTrygve Aaberge2017-09-241-0/+1
| |/ | | | | | | | | | | | | | | | | | | | | | | The new_messages property is used by mark_read to determine if it should excecute. When a channel is initially loaded, new_messages is set to False, and unread_count_display is set to the number of unread messages. new_messages is not set to True until a new message arrives. This means that if you call mark_read after loading a channel, but before a new message has arrived, it won't do anything, even if the channel had unread messages when it was loaded. By setting new_messages in set_unread_count_display, this is fixed.
* | Merge pull request #439 from trygveaa/fix/multiline-prefix-bugTrygve Aaberge2017-09-271-7/+19
|\ \ | | | | | | Ensure that all lines printed to weechat specifies a prefix
| * | fix: Ensure that all lines printed to weechat specifies a prefixTrygve Aaberge2017-09-221-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we print a message with multiple lines to weechat, we want the nick/prefix to appear on the first line, and no prefix on the subsequent lines. When this message is handled by weechat, it processes each line of the message separately, and applies a prefix for each line. It seems to me that if the line doesn't contain any tab characters, it should end up with an empty prefix, and this is what happens for me. However, some users are having issues where both the prefix and the message ends up incorrect (issue #274, #385 and #421), which seems to be related to this. Additionally, if the message contains a tab character on any of the lines after the first, the part before the tab character would be the prefix for that line, which is completely wrong. I haven't seen that happen, as it seems that slack replaces tab characters with spaces, but we should handle it correctly nevertheless. The weechat documentation states that you should use a space followed by a tab character to disable the prefix. This patch inserts this after each newline, so the prefix is disabled for each line except the first. I can't reproduce the issue, so I can't verify if this fixes the issue. As far as I can see, for me the behavior is the same with this patch. Hopefully, this fixes #274.
| * | refactor: Split en/decoding helper into a separate methodTrygve Aaberge2017-09-221-7/+13
| |/ | | | | | | | | | | | | Separate the code for wrapping a method so arguments and return values are encoded/decoded into a new method in WeechatWrapper. This allowes us to use it outside of __getattr__ as well, so we can handle some specific methods differently.
* | Merge pull request #430 from trygveaa/send-multiline-messagesTrygve Aaberge2017-09-271-0/+14
|\ \ | |/ |/| Add support for sending multiline messages
| * Add support for sending multiline messagesTrygve Aaberge2017-09-051-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While weechat plugins like multiline.pl and edit.py allow you to compose multiline messages, wee-slack normally receives them line by line, so it ends up as separate messages. There isn't any direct support for receiving the complete message from weechat, but it can be done with sort of a workaround. There is a callback you can hook on to which allows you to intercept and edit messages before they are sent to the buffer. This callback receives the complete message with all the lines. By using this we can process the whole message, and return an empty string from the callback which means that the message will not be processed further. Note that when this happens, weechat commands are not processed, which is why we only use the callback for messages that contain a newline and does not start with slash. Otherwise, we are returning the string sent to the callback, which would be the same as the callback not being hooked in. I've also opened a PR in weechat for supporting multiline input properly[0]. If that is merged, that can be used for newer weechat versions instead of this. [0]: https://github.com/weechat/weechat/pull/1063 Fixes #118
* | Merge pull request #387 from dbarrosop/unwrap_attachmentsTrygve Aaberge2017-09-201-7/+9
|\ \ | | | | | | When expanding attachments avoid rendering same link multiple times
| * | When unfurling attachments avoid rendering same link multiple timesDavid Barroso2017-09-201-7/+9
| | |
* | | Merge pull request #435 from trygveaa/login-failure-messageTrygve Aaberge2017-09-191-65/+53
|\ \ \ | | | | | | | | Print error message when initial connection fails
| * | | Remove commented out code in handle_rtmstartTrygve Aaberge2017-09-181-15/+0
| | | | | | | | | | | | | | | | | | | | No point in keeping commented out code, especially since this code has never been active.
| * | | Return early from handle_rtmstart on failureTrygve Aaberge2017-09-181-68/+68
| | | | | | | | | | | | | | | | This makes the error case a bit clearer and easier to read.
| * | | Print error message when initial connection failsTrygve Aaberge2017-09-161-3/+6
| | |/ | |/| | | | | | | | | | | | | | | | I chose to print this instead of using dbg since it's a rather critical error message. Fixes #432
* | | Merge pull request #401 from ToxicFrog/toxicfrog/unfurlTrygve Aaberge2017-09-171-2/+2
|\ \ \ | |/ / |/| | Fix overzealous regex in unfurl_refs
| * | Fix overzealous regex in unfurl_refsBen Kelly2017-07-221-2/+2
| | | | | | | | | | | | Signed-off-by: Ben Kelly <btk@google.com>
* | | Merge pull request #414 from trygveaa/improve-rendering-of-multiline-editsTollef Fog Heen2017-08-271-8/+39
|\ \ \ | | | | | | | | Improve rendering of changes in multiline messages
| * | | Prevent lines being broken in bare display modeTrygve Aaberge2017-08-121-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you update a line with hdata_update and pass a string containing newlines, the buffer will become a bit broken when bare display mode is activated (alt+l). It seems that the newlines are printed in bare mode, but extra lines are not inserted, so the lines are overlapping with each other. Fixes #306
| * | | Abort modification of message if encountering line without dataTrygve Aaberge2017-07-301-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Not sure if this can happen. The weechat documentation doesn't state that it can, but since the if condition was there, maybe it can. If it can and does happen, abort the modification, which is better than something unexpected happening.
| * | | Improve rendering of changes in multiline messagesTrygve Aaberge2017-07-301-4/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, if a multiline message was edited or reacted to, all of the new message would be crammed into the last line of the already printed message. This change updates each line separately, so if the number of lines in the message doesn't change, the message will still be rendered correctly after edits or reactions. If the number of lines change, the rendering is still improved, however I don't know if it is possible to insert or delete lines in a weechat buffer without re-rendering the whole buffer, so it won't be perfect. If the number of lines of a message decreases after an edit, the extra lines will still be present, but they will be blanked. If the number of lines increases, the first lines will be set as normally, but the last line will contain all of the rest of the lines.
| * | | Set correct id on all the lines of a messageTrygve Aaberge2017-07-291-4/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of only updating the last line printed with the id of the message (ts.minor, set in the date_printed field), update all of the lines that is printed for that message. This is necessary for updating all of the lines on changes, instead of only the last. This will be implemented in the next commit. This assumes that the lines after the first in messages always has an empty prefix, and that the first line of a message always has a prefix. This holds for the messages I have seen (single-line, multi-line as well as me-messages and joins/quits). Other approaches I considered was to count the number of newlines in the message and update the same number of lines, or to check the existing date_printed field of the messages and update the ones that had 10 digits or more (since current timestamps has that, and the slack id currently has 6 digits). However, I dropped them in favor of the prefix solution which seems better.
* | | | Check that the bot_id exists before using itTrygve Aaberge2017-08-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of just checking that bot_id is not None, check that it exists in the list of bots. This prevents a KeyError when trying to access a bot that doesn't exist in the list. This KeyError would happen if you use a reminder. The message from slackbot then has bot_id B01 which is not in the list of bots from rtm.start and gives bot_not_found if trying to look it up with the bots.info API endpoint. By ignoring the bot_id we fall back to the user/username, which in the case of reminders is slackbot, so the name appears just as the other messages from slackbot. Fixes #420
* | | | Fix HTML entity-encoding of outgoing messagesTrygve Aaberge2017-08-011-4/+4
|/ / / | | | | | | | | | | | | | | | We have to replace the & before we replace < and >, otherwise the & in &lt; and &gt; are going to be replaced. Additionally, we need to end the sequences with ; which was missing.
* | | Merge remote-tracking branch 'origin/nicklist-presence-groups'Tollef Fog Heen2017-07-281-1/+12
|\ \ \
| * | | Move presence change to a SlackTeam methodMarcel de Vries2017-07-241-6/+9
| | | |
| * | | Update nicklist when team member presence changesMarcel de Vries2017-07-231-1/+9
| | | |
* | | | Decode the basic HTML entities in topic handlingTollef Fog Heen2017-07-281-6/+9
| | | | | | | | | | | | | | | | Closes: #315
* | | | Merge pull request #399 from wee-slack/nicklist-presence-groupsTollef Fog Heen2017-07-281-11/+15
|\| | | | | | | | | | | Put users in groups according to presence
| * | | Put users in groups according to presenceTollef Fog Heen2017-07-191-11/+15
| | | | | | | | | | | | | | | | Fixes #398
* | | | Merge pull request #408 from auscompgeek/fix-status-cmdTollef Fog Heen2017-07-281-1/+1
|\ \ \ \ | | | | | | | | | | Fix AttributeError on /slack status in team buffer
| * | | | Fix AttributeError on /slack status in team bufferDavid Vo2017-07-271-1/+1
| | |/ / | |/| |
* | | | Merge pull request #412 from trygveaa/set-correct-unread-countTollef Fog Heen2017-07-281-1/+1
|\ \ \ \ | | | | | | | | | | Set correct number of unread messages in hotlist
| * | | | Set correct number of unread messages in hotlistTrygve Aaberge2017-07-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While the commit 6718e2f fixed buffers not appearing in the hotlist, after it the number of new messages for each buffer was gone. This makes the number of messages for each buffer shown again.
* | | | | Merge pull request #411 from auscompgeek/fix-open-threadTollef Fog Heen2017-07-281-1/+1
|\ \ \ \ \ | | | | | | | | | | | | Fix opening thread buffers
| * | | | | Fix opening thread buffersDavid Vo2017-07-281-1/+1
| |/ / / /
* | | | | Add support for editing other messages than just the last oneTollef Fog Heen2017-07-281-6/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Similar syntax as for adding reactions: 3s/foo/bar/ Fixes: #153
* | | | | Fix return codes in buffer_input_callbackTollef Fog Heen2017-07-281-2/+2
|/ / / / | | | | | | | | | | | | Not sure this actually matters as weechat seemed happy with the wrong return codes too