Skip to content
A GroupMe bot framework that lets you make commands like Flask's routing
Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
example
groupmebot
.gitignore
LICENSE.md
README.md
requirements.txt
setup.py

README.md

GroupMe Bot

A simple GroupMe Bot that starts a HTTP server to handle the bot callbacks. The GroupMe dev site allows you to create a bot and set your callback.

The GroupMe bot class is made similar to flask, so you can define your commands with decorators. Check the example for an in depth version.

Examples

Simple Bot

from groupmebot import GroupMeBot

BOT_ID = "" # Get from GroupMe dev site
bot = GroupMeBot(BOT_ID)

@bot.command("/hello")
def hellothere(args):
    bot.post("Hello there!")


if __name__ == "__main__":
    # Serve forever
    bot.serve(host='0.0.0.0', port=4000, threaded=True)

Arguments

Commands can also access text (arguments) after the command. They are split on whitespace and passed in as a list:

@bot.command("/mynameis")
def mynameis(args):
    if args:
        bot.post("Hello, %s!" % args[0])

GroupMeBot API Reference:

GroupMeBot(bot_id: string): Initializes the bot. bot_id is needed to post a message to the GroupMe.

command(command_str: string): Used to decorate functions that are called when the first word of the text matches command_str. The decorated function is passed a list of arguments when the command was called.

post(message: string): Post a message to your GroupMe. The GroupMe is defined by the bot_id when initialized.

serve(*args, **kwargs): Starts the server and listens for callbacks. The arguments are actually passed to Flask's run command. As per Flask's documentation, it is not the recommended way to run the server, but is useful for debugging. Look into Flask's deployment options for production use. (Though, I find this good enough for a GroupMe that isn't averaging 100/requests(messages)/second like a real web server)

You can’t perform that action at this time.