diff --git a/coffee_bot/run.py b/coffee_bot/run.py new file mode 100755 index 0000000000000000000000000000000000000000..33f12bdbdfcff5ce11fb129e1c1d4da9f3de4830 --- /dev/null +++ b/coffee_bot/run.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python3 + +import argparse + +import mattermost +from coffee_bot.match_making import matching_in_channel + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Make matches between channel members") + parser.add_argument("--channel-id", required=True) + parser.add_argument("--minimum-members", type=int, default=4, required=False, help=( + "Don't start the matchmaking process if there is less than this many members of the channel. " + "Default value is 4." + )) + parser.add_argument("--group-size", type=int, default=2, required=False, help=( + "Size of the created groups. It can happen that there is a leftover group with less than " + "this many members, but there will be no group created with less than 2 members. " + "GROUP_SIZE has to be at least 2! Default value is 2" + )) + parser.add_argument("--too-few-message", type=str, default=None, required=False, help=( + "Message sent to the channel specified by CHANNEL_ID in case there is less than " + "MINIMUM_MEMBERS available members for matchmaking." + )) + parser.add_argument("--group-hail-message", type=str, default=None, required=False, help=( + "Message sent to the group after making a match" + )) + parser.add_argument("--left-out-message", type=str, default=None, required=False, help=( + "Message sent for the channel specified by CHANNEL_ID in case someone had to be left out. " + "It can be a python format string, the left out user's data is available in the variable user." + )) + + parser.add_argument("--mattermost-url", type=str, default=None, required=False, help=( + "the URL for the mattermost API (including /api). Defaults to environment variable " + "MATTERMOST_URL" + )) + parser.add_argument("--mattermost-token", type=str, default=None, required=False, help=( + "the access token for the bot user. Defaults to environment variable MATTERMOST_TOKEN" + )) + + args = parser.parse_args() + + if args.group_size < 2: + parser.error("GROUP_SIZE has to be at least 2") + + if args.mattermost_url is None: + from .config import MATTERMOST_URL + args.mattermost_url = MATTERMOST_URL + + if args.mattermost_token is None: + from .config import MATTERMOST_TOKEN + args.mattermost_token = MATTERMOST_TOKEN + + run(**args) + + +#pylint: disable=too-many-arguments +def run(mattermost_url, mattermost_token, + channel_id, minimum_members, group_size, + too_few_message, group_hail_message, left_out_message): + + client = mattermost.MMApi(mattermost_url) + client.login(bearer=mattermost_token) + + matching_in_channel( + client=client, + channel_id=channel_id, + group_size=group_size, + group_hail=group_hail_message, + left_out_message=left_out_message, + too_few_message=too_few_message, + minimum_members=minimum_members, + )