Twitter supports phrase search by quoting terms such as "Zulip API".
If we use the feature, the current twitter-bot can't detect used
search phrase. We can detect used search phrase with this change.
It’s in the standard library in Python ≥ 3.5. (We could have used
`'typing;python_version<"3.5"'` to continue supporting earlier
versions, but we don’t.)
Signed-off-by: Anders Kaseorg <anders@zulipchat.com>
This replaces one case where the base ZulipError was raised, and another
where the original exception was re-raised.
This method, and so all API calls, should now only fail via raising this
Exception or by a non-'success' result in the return value dict; this
should avoid leaking any implementation detail and clarify expectations
in user code.
A few users have complained about how hard it is to find the
Trello script on their systems after installing the `zulip`
package. Rishi and I decided that we should instead just ask
the users to download the script directly and run it without
having to install the `zulip` package.
This commit also ensures that the script can be run on both
py2 and py3.
The information logged to the CSV file is largely redundant, since
the ID of the webhook is already printed to the screen once a
webhook is setup correctly.
Since this is a script that the user is required to run
once, we should minimize its reliance on external files as much
as possible. This makes it easier to run the script when one
is SSH-ing into a server and doesn't really care about where
the script lives, for instance.
A few users have complained about how hard it is to find the
Trello script on their systems after installing the `zulip`
package. One way to solve this issue is to make the Trello
script a part of the exported console scripts in the zulip
package, which would mean that the user would not have to
navigate to a particular directory in order to find the script,
but could run it from a terminal directly.
However, to make this happen, we need to minimize the script's
reliance on external configuration files, because we don't want
the user to have to figure out where the config file lives.