DGG-bot
=======

.. image:: https://img.shields.io/pypi/v/dgg-bot.svg
   :target: https://pypi.python.org/pypi/dgg-bot
   :alt: PyPI version info
.. image:: https://img.shields.io/pypi/pyversions/dgg-bot.svg
   :target: https://pypi.python.org/pypi/dgg-bot
   :alt: PyPI supported Python versions

A library for making a bot in Destiny.gg chat.

Installing
----------

**Python 3.9 or higher is required** (version 0.5.0 and above, Python 3.8+ for versions below)

.. code:: sh

    # Linux/macOS
    python3 -m pip install -U dgg-bot

    # Windows
    py -3 -m pip install -U dgg-bot


Usage
-----

Not sure what to put here at this point in time. Unauthorized chat bots are subject to being **banned**, ask Cake in DGG for permission and guidelines for chat bots before running one.


Examples
--------

A simple bot with three commands and will yump back at chatters.

.. code-block:: python

    from dggbot import DGGBot
    import time

    bot = DGGBot(
        "AUTH_TOKEN",
        owner="Owner",
        prefix="$",
    )  # default command prefix is "!"

    @bot.command()
    @bot.is_owner()  # only the owner named in DGGBot can use this command.
    def test(msg):  # $test
        msg.reply("Test 123")

    @bot.command(aliases=["banmeplease"])  # aliases for this command
    def banme(msg):  # $banme / $banmeplease
        bot.send("RightToBearArmsLOL BINGQILIN nathanTiny2")


    def is_cake(msg):  # a check where only the user Cake can use commands with this check
        return msg.nick == "Cake"

    @bot.command(aliases=["oooo"])
    @bot.check(is_cake)
    def pog(msg):
        msg.reply("Cake OOOO")

    """
    Events
    You can either name the function after the event, or include the event name in the decorator.
    mention() is also included as a shortcut for event("on_mention").

    Event names: on_ban, on_broadcast, on_join, on_mention, on_msg, on_mute, on_privmsg, on_quit,
                 on_refresh, on_unban
    """

    @bot.event()
    def on_msg(msg):
        print(msg)

    # @bot.event("on_mention")
    @bot.mention()
    def yump(msg):
        if "MiyanoHype" in msg.data:
            time.sleep(0.5)
            msg.reply(f"{msg.nick} MiyanoHype")

    if __name__ == "__main__":
        bot.run_forever()


Connecting to alternative DGG environments.

.. code-block:: python

    from dggbot import DGGBot

    bot = DGGBot(
        owner="Owner",
        prefix="$",
        sid="SID",
        rememberme="REMEMBERME",
        config={
            {
                "wss": "wss://chat.omniliberal.dev/ws",
                "wss-origin": "https://www.omniliberal.dev",
                "baseurl": "https://www.omniliberal.dev",
                "endpoints": {"user": "/api/chat/me", "userinfo": "/api/userinfo"},
                "flairs": "https://cdn.omniliberal.dev/flairs/flairs.json",
            }
        },
    )

    @bot.event()
    def on_msg(msg):
        print(msg)

    if __name__ == "__main__":
        bot.run_forever()
