zulip_bots: Add a boilerplate bot for external bots.
Add packaged_helloworld as an example of a PyPI package setup for
an external zulip bot that can be installed via pip and lanuched
without the need to include it in the zulip_bots/bots directory.
ADD
packaged_helloworld/README.md
+This is a boilerplate package for a Zulip bot that can be installed from pip
+and launched using the `zulip-run-bots` command.

ADD
packaged_helloworld/packaged_helloworld/__init__.py
+__version__ = "1.0.0"

ADD
packaged_helloworld/packaged_helloworld/doc.md
+Simple Zulip bot that will respond to any query with a "beep boop".
+
+The packaged_helloworld bot is a boilerplate bot that can be used as a
+template for more sophisticated/evolved Zulip bots that can be
+installed separately.

ADD
packaged_helloworld/packaged_helloworld/packaged_helloworld.py
+# See readme.md for instructions on running this code.
+from typing import Any, Dict
+
+import packaged_helloworld
+
+from zulip_bots.lib import BotHandler
+
+__version__ = packaged_helloworld.__version__
+
+
+class HelloWorldHandler:
+ def usage(self) -> str:
+ return """
+ This is a boilerplate bot that responds to a user query with
+ "beep boop", which is robot for "Hello World".
+
+ This bot can be used as a template for other, more
+ sophisticated, bots that can be installed separately.
+ """
+
+ def handle_message(self, message: Dict[str, Any], bot_handler: BotHandler) -> None:
+ content = "beep boop" # type: str
+ bot_handler.send_reply(message, content)
+
+ emoji_name = "wave" # type: str
+ bot_handler.react(message, emoji_name)
+ return
+
+
+handler_class = HelloWorldHandler

ADD
packaged_helloworld/setup.py
+import packaged_helloworld
+from setuptools import find_packages, setup
+
+package_info = {
+ "name": "packaged_helloworld",
+ "version": packaged_helloworld.__version__,
+ "entry_points": {
+ "zulip_bots.registry": ["packaged_helloworld=packaged_helloworld.packaged_helloworld"],
+ },
+ "packages": find_packages(),
+}
+
+setup(**package_info)

zulip_bots: Add a boilerplate bot for external bots.

Add packaged_helloworld as an example of a PyPI package setup for
an external zulip bot that can be installed via pip and lanuched
without the need to include it in the zulip_bots/bots directory.