| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
I forgot to make some required changes in the tests after commit f3d880e
and commit 49d481c.
|
| |
|
|
|
|
|
|
|
|
| |
I included it in the script as well, since it is included in the script
in weechats repo.
I also removed the coding comment from wee_slack.py since the file is in
ascii.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Even after the last two changes, I have still experienced a disconnect
because of missing pong once where I think I possibly shouldn't have
been disconnected. Hopefully 30 seconds is a good compromise between not
disconnecting when it isn't necessary and not waiting too long before
disconnecting a dead connection.
|
|
|
|
|
|
|
|
| |
With large teams on a slow computer, wee-slack may unfortunately hang
for a while at times while processing data. When this happen, it doesn't
get a chance to send pings. When it's finished processing, it previously
might have disconnected if the pong checker runs before sending a ping,
since it's a long time since a ping has been sent.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When we receive many lines over the websocket, receive_ws_callback seems
to be called periodically (10 times per second or so) until all lines
have been read. Since we previously only read one line per invocation of
receive_ws_callback, it would take a long time to read all the lines.
In addition to making events processed slower than necessary, this
caused a problem for the pong watcher. Since the lines was processed so
slow, it might take a long time until we process the pong message when
the queue was large. This caused the script to disconnect the websocket
since it didn't see the pong messages in time.
To fix this, we run websocket receive in receive_ws_callback until there
are no more messages. The messages are just added to the eventrouter
queue, not processed right away, so this shouldn't cause performance
issues.
|
|
|
|
|
|
|
| |
12 seconds is a bit more than twice the amount of time between the pings
we send.
Fixes #238, fixes #480, fixes #561
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Instead of waiting for reconnect_if_disconnected to call connect.
|
|
|
|
|
|
| |
Also check that the team is connected before sending ping.
Fixes #687
|
|
|
|
|
| |
Changes send_to_websocket to handle the same errors as
receive_ws_callback.
|
| |
|
|
|
|
|
| |
Use Ubuntu Xenial (16.04), since the default (Trusty, 14.04) doesn't
have python 3.7.
|
|
|
|
| |
It can now be run with either python 2 or 3.
|
| |
|
| |
|
|
|
|
|
|
| |
This mainly adds team, channel_general and user_alice as fixtures, so we
can use those directly instead of picking arbitrary ones from the lists.
It also adds assertions to some tests which where missing it.
|
|
|
|
| |
These tests don't do any assertions, so they are not very useful.
|
| |
|
|
|
|
|
|
| |
Python 3 doesn't have these functions, but returns iterables and views
by default. For python 2 this may have a small performance impact, but
probably not much.
|
|
|
|
|
|
|
| |
Python 3 receives unicode strings as arguments in weechat callbacks,
websocet receive etc. and we can send unicode strings to weechat
functions, websocket etc., so we don't need to do any of this
converting.
|
|
|
|
|
|
| |
Python 3 no longer respects __cmp__, as it has more fine-grained hooks
for ordering/comparison. To minimize code changes, implement them in
terms of the existing __cmp__ method.
|
|
|
|
|
|
| |
__getattr__ is expected to raise AttributeError, not KeyError.
The removal of the call to hasattr() also speeds up fetch_setting().
|
|
|
|
|
|
| |
PluginConfig uses round-tripping through wee_slack.w to coerce
the its default values to the correct type. Without this, the normal
getters fail, as '' cannot be converted to an integer/boolean.
|
|
|
|
|
| |
Use sha1 from the hashlib module, and factor out a helper function that
makes sure the argument to sha1 is a bytestring.
|
|
|
|
| |
Try both the old and the new locations.
|
|
|
|
|
| |
This is compatible with python 3, which StringIO from StringIO or
cStringIO is not.
|
| |
|
|
|
|
| |
Comments are updated as well as live code.
|
|
|
|
|
| |
It seems pointless to serialize request metadata first with pickle, then
pack it into json, just to unpack both afterwards.
|
|
|
|
|
| |
This test doesn't do any assertions, and is as far as I can see
completely useless.
|
|
|
| |
Add @user-groups with tab-completion. @user-groups will be unfurl into format <!subteam^{ID}|handle> message before sending message via linktext method.
|
|
|
|
|
|
| |
If wee-slack has tried to connect too many times, it will give up.
Inform about this in the error message, instead of keep saying that it
will try to reconnect.
|
|
|
|
| |
This parameter is not used in the function.
|
|
|
|
| |
Previously, when writing e.g. `@channel: test` the colon would be lost.
|
| |
|
|
|
|
|
|
| |
Away/back will be set for all slack teams if -all is used.
Closes #596
|
|
|
|
|
|
|
|
|
|
| |
This replaces the trailing whitespace match with a non-consuming lookahead
so that strings like '*one* *two*' match correctly, and uses \w instead
of hard coded ascii characters.
This is taken from #359 and updated.
Closes #359
|
| |
|
|
|
|
|
|
|
|
| |
Currently files are always uploaded to the main channel, even when
`/slack upload` is run in a thread buffer. This happens because the
`thread_ts` field isn't included in the upload request.
Fixes #672
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Thanks to @celsworth and @micolous for pointing out that Slack now
requires this for some teams.
From https://github.com/slackapi/python-slackclient/issues/118#issuecomment-348731791:
I've observed that some Slack teams have (recently) been opted into
an experiment (by SlackHQ) which requires that ping messages are
sent by RTM clients, otherwise they will be disconnected after 2-3
minutes. This is more frequently than the other reporters, and has
only become an issue in the last 4 days for me.
However, this experiment has only been applied to a limited number
of teams (I see only one team with the issue and all others without,
even when running the same bot code), which don't appear to
correlate with age of the team.
May partly fix #679, but that seems to also be caused by an issue in
websocket-client.
|
|
|
|
|
|
| |
The team may have external users (i.e. guests or users from other
teams), which we don't store in the team user list, so ignore status
updates for those.
|
| |
|
|
|
|
|
|
|
|
|
| |
Trying to concat exceptions containing non-ascii chars with our own
message failed with a UnicodeDecodeError. We have to decode them to
unicode strings first. This includes some helper methods for that, one
which includes the traceback, and one which only has the error.
Fixes #593
|
| |
|