1 # Python XMPP Bot 2 3 This is an XMPP Bot written in Python. It's currently in the "alpha" stage of 4 development and is being actively worked on. It is currently in a working state 5 and can be deployed to servers, but there may be breaking changes in subsequent 6 versions so read the release notes carefully. 7 8 ## Installation 9 10 There isn't really a procedure to install the bot at the moment. You will need 11 to clone this repo, `pip install xmpppy pytz` (or similar), fill out the config 12 file and rename it to `botconfig.json`, and then run the bot on your server. 13 Make sure you have already created an account on your XMPP server for your bot. 14 15 ## Using 16 17 The bot can be invited to an XMPP group chat the same way one would invite any 18 other person. Once the bot is in the chat, run `.tbhelp` for a list of commands 19 the bot can do. 20 21 The users who have been configured as admins in the `botconfig.json` file can 22 also see additional commands by messaging the bot directly with the `.tbhelp` 23 command. Admin users can run these additional commands by messaging the bot 24 directly (they will not work from within a group chat). 25 26 ## Roadmap 27 28 Here is a list of features I plan to add: 29 30 * Implement command prefix config (i.e. `.tb` not hardcoded; can be configured) 31 * Differentiate .tbrestart command into: 32 * `<prefix>restart`: [ADMIN] Proper script restarting (using os.execv or something) 33 * `<prefix>configreload`: [ADMIN] Config file reloading 34 * `<prefix>reconnect`: [ADMIN] Simple disconnect/reconnect 35 * Add more feature-full dice roller (e.g. ability to specify number of dice) 36 * Add ability to add quotes to the quotes file (perhaps restrict to room 37 owners/moderators). 38 * Implement poll capabilities: 39 * `<prefix>pollcreate <pollName> <duration> <multipleChoice=True|False> 40 <option1> <option2> ... <optionN>`: Create a poll. The poll will only 41 accept votes from the group chat in which it was created. 42 * `<prefix>polllist`: List all ongoing polls for the current room. 43 * `<prefix>polllistall`: [ADMIN] List all ongoing polls. 44 * `<prefix>pollend <pollName>`: Prematurely end a poll. 45 * `<prefix>pollview <pollName>`: View details about a poll running in the 46 current room (name, remaining duration, options, number of votes, etc.) 47 * `<prefix>pollviewall <pollName>`: [ADMIN] Like above but can see all polls. 48 * `<prefix>pollvote <pollName> <option1> <option2> ... <optionN>`: Vote in a 49 poll in the current room (only one option accepted if not multiple 50 choice). 51 * `<prefix>pollresults <pollName>`: Print the results of a poll from the 52 current room which has ended including highlighting the winner. 53 * `<prefix>pollresultsall <pollName>`: [ADMIN] Like above but can see all 54 polls. 55 * _Maybe_ ranked polls with specification of method used to determine the 56 winner? 57 * Expand bot documentation: 58 * Comment class functions. 59 * Add to README a detailed overview of the commands available.