def main(): # Read in the config config = configparser.ConfigParser() config.read('config.ini') # Setup Mattermost connection mm = mattermost.MMApi(config["mattermost"]["url"]) mm.login(bearer=config["mattermost"]["token"]) user = mm.get_user() # Check for team id if "team_id" not in config["mattermost"]: available_teams = mm.get_teams() eprint("No team_id set in config.ini, please select one:") for team in available_teams: eprint(f" - {team['display_name']}: {team['id']}") return # Check for channel id if "channel_id" not in config["mattermost"]: available_channels = mm.get_channels_for_user( user["id"], config["mattermost"]["team_id"]) eprint("No channel_id set in config.ini, please select one:") for channel in available_channels: eprint(f" - {channel['display_name']}: {channel['id']}") return mm_ws = mattermost.ws.MMws(lambda mm_ws, data: handle_ws(mm_ws, data, pty), mm, config["mattermost"]["ws_url"]) # Spawn a new bash shell, sending all output to Mattermost pty.spawn("/bin/bash", lambda fd: read_from_pty(fd, mm, config)) pty.fork()
def __init__(self, mattermost_config): self._host = mattermost_config.get("mm_host") self._port = mattermost_config.get("mm_port") self._mattermost = mattermost.MMApi("http://{}:{}/api".format( self._host, self._port)) self._mattermost.login(bearer=mattermost_config.get("mm_access_token")) self._team = self.get_team_by_name(mattermost_config.get("mm_team")) self._channel = self._mattermost.get_channel_by_name( team_id=self._team.get("id"), channel_name=mattermost_config.get("mm_channel"))
def main(): show_usage = False mm_api = None chan_id = None if "MM_APIURL" in os.environ: mm_api = mattermost.MMApi(os.environ["MM_APIURL"]) else: show_usage = True if ("MM_USER" in os.environ and "MM_PASS" in os.environ) or ("MM_BEARER" in os.environ): if "MM_BEARER" in os.environ: mm_api.login(bearer=os.environ["MM_BEARER"]) else: mm_api.login(os.environ["MM_USER"], os.environ["MM_PASS"]) else: show_usage = True if "MM_CHANID" in os.environ: chan_id = os.environ["MM_CHANID"] else: show_usage = True if len(sys.argv) < 1 or len(sys.argv) > 3: show_usage = True if show_usage: print(cleandoc("""required ENV-parameters: MM_APIURL, MM_USER+MM_PASS or MM_BEARER, MM_CHANID. arguments: [PREFIX] [SUFFIX] """)) sys.exit(1) prefix = suffix = "" try: prefix = sys.argv[1].replace("\\n", "\n") suffix = sys.argv[2].replace("\\n", "\n") except: pass print("Posting to channel:" +str(mm_api.create_post(chan_id, prefix+sys.stdin.read()+suffix, props={"from_webhook":"true"}))) mm_api.logout()
import sys import time import random import shelve import datetime from insults import list_of_insults GAME_MUTEX = Lock() # Read in the config config = configparser.ConfigParser() config.read('config.ini') # Setup Mattermost connection mm = mattermost.MMApi(config["mattermost"]["url"]) mm.login(bearer=config["mattermost"]["token"]) user = mm.get_user() # Setup randomkick config active_users_since = int(config["randomkick"]["active_users_since_minutes"]) # Setup duel config duel_max_game_ticks = int(config["duel"]["max_game_tick"]) # Setup shelve storage shelve_location = config["stats"]["location"] with shelve.open(shelve_location) as db: if 'russianroulette' not in db: db['russianroulette'] = [] if 'randomkick' not in db:
if record.levelno in (logging.ERROR, logging.CRITICAL): raise SystemExit(-1) logging.basicConfig(handlers=[ExitOnErrorHandler()], format='%(levelname)s: %(message)s', level=LOG_LEVEL) DRY_RUN = '--dryrun' in sys.argv if DRY_RUN: logging.info("Dry run. Nothing will be created.") g = Github(GITHUB_KEY) r = g.get_repo(GITHUB_REPO) GITHUB_USER = g.get_user().login mm = mattermost.MMApi(MATTERMOST_URL) mm.login(MATTERMOST_LOGIN, MATTERMOST_PW) # Retrieve Issues from github d = datetime.datetime.now() - datetime.timedelta(days=3) issue_search = {'state': 'open', 'since': d} all_issues = r.get_issues(**issue_search) # filter messages that need some attention pending_issues = [] for i in all_issues: skip = False labels = [] for l in i.raw_data['labels']: l = l['name'] if l.startswith("area") or l.startswith("team") or l.endswith(