This repository has been archived on 2024-07-28. You can view files and clone it, but cannot push or open issues or pull requests.
2021-01-13 22:49:52 +01:00
2021-01-13 14:10:05 +01:00
2021-01-13 22:49:52 +01:00
2021-01-10 14:10:39 +01:00
2021-01-10 14:10:39 +01:00
2021-01-13 22:49:52 +01:00
2021-01-13 22:49:52 +01:00
2021-01-13 22:49:52 +01:00

xbotlib

PyPI version Build Status

XMPP bots for humans

status: experimental

A friendly lightweight wrapper around slixmpp for writing XMPP bots in Python. The goal is to make writing and running XMPP bots easy and fun. xbotlib is a single file implementation which can easily be understood and extended. It provides a small API surface which reflects the slixmpp way of doing things.

Install

$ pip install xbotlib

Example

Put the following in a echo.py file. xbotlib provides a number of example bots which you can use to get moving fast and try things out.

from xbotlib import EchoBot

EchotBot()

And then python echo.py. You will be asked a few questions like which account details your bot will be using.

This will generate a bot.conf file in the same working directory for further use.

Here's the code for the EchoBot.

class EchoBot(Bot):
    def direct(self, message):
        self.reply(message.body, to=message.sender)

    def group(self, message):
        if "echobot" in message.body:
            self.reply(message.body.split(":")[-1], room=message.room)

Read more in the API reference for how to write your own bots.

All examples

  • EchoBot: Sends back what you sent it
  • WhisperBot: Pseudo-anonymous whispering in group chats

See xbotlib.py for all example bots.

API Reference

When writing your own bot, you always sub-class the Bot class provided from xbotlib. Then if you want to respond to a direct message, you write a direct function. If you want to respond to a group chat message, you write a group function.

Bot.direct(message)

Respond to direct messages.

Arguments:

  • message: received message (see SimpleMessage below for available attributes)

Bot.group(message)

Respond to a message in a group chat.

Arguments:

  • message: received message (see SimpleMessage below for available attributes)

SimpleMessage

A simple message interface.

Attributes:

  • body: the body of the message
  • sender: the user the message came from
  • room: the room the message came from
  • receiver: the receiver of the message
  • nickname: the nickname of the sender
  • type: the type of message (chat or groupchat)

Configure your bot

Using the environment

You can pass the --no-input option to your script invocation (e.g. python bot.py --no-input).

xbotlib will try to read the following configuration values from the environment.

  • XBOT_JID: The username of the bot account
  • XBOT_PASSWORD: The password of the bot account
  • XBOT_NICK: The nickname that the bot uses

Roadmap

See the issue tracker.

Changes

See the CHANGELOG.md.

License

See the LICENSE.

Description
XMPP bots for humans
Readme 312 KiB
Languages
Python 100%