| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
On Python 2, weechat.string_remove_color doesn't work for Unicode
strings containing non-ASCII characters. The string must be converted
to bytes using encode_to_utf8.
Furthermore, the length of a non-ASCII string (either in bytes or
codepoints) isn't the same as the width of the string on screen. To
accurately calculate the width, when the string might contain
combining or double-width characters, use weechat.strlen_screen.
Co-authored-by: Benjamin Moody <benjaminmoody@gmail.com>
|
|
|
|
|
|
|
|
|
|
| |
I continuously received this error:
```
AttributeError: 'NoneType' object has no attribute 'token'
```
Because tokens list was `['', '']`. And wee-chat tried initiate connections without tokens.
This small change fix this error.
|
| |
|
| |
|
|
|
|
| |
This comma broke compatibility with Python 2.7, so remove it.
|
|
|
|
| |
Fixes #842
|
|
|
|
|
|
| |
When `weechat.look.prefix_align` is set to `none`, lines after the first
in a message would not align with the first. Use the same number of
spaces as the prefix for those lines, so they align with the first.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
For some reason, some MPIMs are listed in the channel list of the
response from rtm.start, with is_mpim set to true, instead of in the
mpims list. These incorrectly appeared as private channels instead of
MPIMs in wee-slack.
These entries do not contain a members list, so we have to call
conversations.members and set the name after receiving the response from
that.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Apparently, the API now sends an mpim_joined event when an MPIM is
created instead of a group_joined event, even if we don't set mpim_aware
to true.
Instead of just handling mpim_joined in addition to group_joined (which
could cause issues if both are called for MPIMs, though I haven't
experienced that), it's better to properly support mpim_aware.
Fixes #825, fixes #833
|
|
|
|
| |
Fixes #836
|
|
|
|
| |
E203 should be ignored when using black according to their docs.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
It turns out that some channels in rtm.start include a member list with
a few users, but not all. Therefore, I don't know how we can know if the
list is complete or not, so we have to call conversations.members for
all channels.
Fixes #829
|
|
|
|
|
|
|
|
|
|
| |
I'm not sure when members for a channel is included in rtm.start, but
it seems like shared and private channels doesn't include the field at
all, while some other channels have started to only include the user.
Therefore, call conversations.members if a channel doesn't have any
members or if the only member is the user.
Hopefully this fixes #829
|
|
|
|
|
|
| |
Thanks to @sudoforge in #828 for this.
Closes #828
|
| |
|
|
|
|
|
|
| |
Fixes a bug where the first line would use prefix_same_nick after
reprinting messages if the first and last message were from the same
person.
|
|
|
|
|
|
|
|
| |
conversations.members only returns 100 members if we don't specify
limit, and requires pagination to get the rest. We want to know more
members than that, so specify a limit of 1000, which is the max we can
specify. If a channel has more than 1000 members, we would have to use
papagination to get all, but I'll just do this simple change for now.
|
|
|
|
|
|
|
| |
Since all members might not be known yet in get_history (which is why we
call conversations.members), if we look up unknown users there, we won't
look up all the unknown users. Check for unknown users when receiving
the response for conversations.members instead.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I don't like displaying the user identifier, but if all of the steps in
get_sender fails, it's better to fallback to the identifier rather than
an empty string, so you can at least distinguish between different
users.
It falls back to an empty string again if user_identifier is None,
because some messages in the tests doesn't even have a user_identifier.
Though, I don't think any messages the Slack servers are sending now are
missing user_identifier.
After the last commit, hopefully this fallback to user identifier will
never be used though.
|
|
|
|
|
|
| |
If a message is sent from an external user, the message will include the
user profile, so we can use that to display the correct name if we
haven't fetched the user info yet.
|
| |
|
| |
|
|
|
|
|
|
|
| |
This patch removes the configuration for Travis-CI, and adds
configuration for Github Actions.
Co-authored-by: Ashish Kulkarni <ashish@kulkarni.dev>
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Apparently chat.meMessage requires these characters unescaped, even
though it interpret links using these characters. There doesn't seem to
be any options for changing this behavior, so we have to linkify
nicks/channels while also leaving <>& unescaped.
Fixes #704, closes #822
|
| |
|
|
|
|
|
| |
This was broken in #774 as it checked if there was at least one
reply, which is not the case for new threads.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now that conversations.mark works for all tokens, just using the
conversations API the same way as the old APIs works fine as far as I
can see.
Loosing unread_count_display by replacing mpim.open with
conversations.open and channels.info with conversations.info means that
mpims and channels will not be marked as unread when wee-slack loads if
background_load_all_history has been set to false anymore. As far as I
can see, the only way to check if they have unread messages is by
loading the history, so there is no way around this.
Fixes #792
|
|
|
|
|
|
|
|
|
| |
hashlib returns a byte string in Python 2, but since we only use unicode
strings elsewhere the check against that in
SlackChannelHashedMessages.__missing__ didn't work. Make sure sha1_hex
returns a unicode string instead.
Fixes #800, closes #801
|
| |
|
|
|
|
| |
Relates to #797
|
| |
|
| |
|
|
|
|
|
|
|
| |
Since people install this either just by copying the script, or by
installing it from WeeChats repo, and neither of these methods install
dependencies automatically, I really want to keep dependencies to a
minimum. So I don't think it's useful to document how to add new ones.
|
|
|
|
|
|
| |
How to install the dependencies for development and running tests is now
documented in docs/contributing.md, so change the development section to
just a debugging section.
|
|
|
|
|
| |
Doesn't matter much, but this skips a redirect, and is the url I get
when starting a new Pipenv.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[Pipenv][0] makes it easier to maintain a consistent development
environment for projects using Python. You no longer need to manage
`pip` and `virtualenv` separately, nor deal with the drift and other
issues requirements.txt brings. It enables gaining insights into your
dependency graph, but most importantly - it enables deterministic
builds, which prevents the entire class of "it works on my machine"
problems.
[Pipenv][0] is similar to package managers from other ecosystems, such
as Node.js' `npm` or Rust's `cargo`. Additionally, [Pipenv][0] is an
[officially recommended package manager][1] by the Python project.
This patch brings [Pipenv][0] to the wee-slack project to simplify the
development and contribution experience. Additionally, this patch brings
basic contributing documentation to help onboarding.
[0]: https://github.com/pypa/pipenv
[1]: https://packaging.python.org/tutorials/managing-dependencies/#managing-dependencies
|