Example #1
0
import os
import requests
import mebots
import random

from flask import Flask, request

app = Flask(__name__)
bot = mebots.Bot('mealbot', os.environ.get('BOT_TOKEN'))

PREFIX = 'mealbot'
GROUPME_ACCESS_TOKEN = os.environ['GROUPME_ACCESS_TOKEN']
GROUP_SIZE = 2

def process(message):
    # Prevent self-reply
    if message['sender_type'] != 'bot':
        if message['text'].lower().startswith(PREFIX):
            group_id = message['group_id']
            users = requests.get(f'https://api.groupme.com/v3/groups/{group_id}?token={GROUPME_ACCESS_TOKEN}').json()["response"]["members"]
            users = [user['name'] for user in users]
            random.shuffle(users)
            pairs = []
            extra = None
            if len(users) % GROUP_SIZE != 0:
                extra = users.pop()
            for i in range(0, len(users), GROUP_SIZE):
                pairs.append(users[i:i + GROUP_SIZE])
            if extra:
                pairs[-1].append(extra)
            return 'Meal pairings:\n--------------\n' + '\n'.join(['- ' + ' & '.join(pair) for pair in pairs])
Example #2
0
# Other
import mebots
from threading import Thread
import requests
import os
import argparse

# Bot components
from factory import Factory

CACHE_TIMEOUT = 60 * 60

app = Flask(__name__)
cache = Cache(app, config={"CACHE_TYPE": "simple"})
bot = mebots.Bot("memebot", os.environ.get("BOT_TOKEN"))

MAX_MESSAGE_LENGTH = 1000
PREFIX = "%"

factory = Factory()


# Webhook receipt and response
@app.route("/", methods=["POST"])
def receive():
    """
    Receive callback to URL when message is sent in the group.
    """
    # Retrieve data on that single GroupMe message.
    message = request.get_json()
Example #3
0
# Flask
from flask import Flask, request, render_template, redirect

# Other
import mebots
from threading import Thread
import requests
import os
import time
from game import Game


app = Flask(__name__)
bot = mebots.Bot("tictactoebot", os.environ.get("BOT_TOKEN"))

MAX_MESSAGE_LENGTH = 1000
PREFIX = "#"

games = {}


# Webhook receipt and response
@app.route("/", methods=["POST"])
def receive():
    """
    Receive callback to URL when message is sent in the group.
    """
    # Retrieve data on that single GroupMe message.
    message = request.get_json()
    group_id = message["group_id"]
    # Begin reply process in a new thread.
Example #4
0
import os
import requests
import mebots

from flask import Flask, request

app = Flask(__name__)
bot = mebots.Bot('at_everyone', os.environ.get('BOT_TOKEN'))
GROUPME_ACCESS_TOKEN = os.environ.get('GROUPME_ACCESS_TOKEN')
SEARCH = '@everyone'


def get_user_ids(group_id):
    users = requests.get(
        f'https://api.groupme.com/v3/groups/{group_id}?token={GROUPME_ACCESS_TOKEN}'
    ).json()['response']['members']
    user_ids = [user['id'] for user in users]
    return user_ids


def send(message):
    url = 'https://api.groupme.com/v3/bots/post'
    r = requests.post(url, json=message)


def process(message):
    # Prevent self-reply
    if message['sender_type'] != 'bot':
        if SEARCH in message['text'].lower():
            group_id = message['group_id']
            user_ids = get_user_ids(group_id)
Example #5
0
import mebots
import os
import requests
from flask import Flask, request, render_template, redirect
from flask_socketio import SocketIO, emit, join_room, leave_room
import eventlet
from threading import Thread
import json
import random

app = Flask(__name__)
socketio = SocketIO(app)
bot = mebots.Bot("bah", os.environ["BOT_TOKEN"])

PREFIX = "CAH "

games = {}
# TODO: use references to Player objects??
playing = {}


class Player:
    def __init__(self, user_id, name):
        self.user_id = user_id
        self.name = name
        self.hand = []
        self.won = []

    def draw_white(self, card):
        self.hand.append(card)
Example #6
0
import os
import requests
import mebots

from flask import Flask, request

from website import Website

app = Flask(__name__)
bot = mebots.Bot('old_owl', os.environ.get('BOT_TOKEN'))
website = Website()

PREFIX = '!'


def process(message):
    # Prevent self-reply
    if message['sender_type'] != 'bot':
        if message['text'].startswith(PREFIX):
            args = message['text'].lstrip(PREFIX).split()
            command = args.pop(0)
            query = ' '.join(args)
            if command == 'search':
                return website.search(query)


# Endpoint
@app.route('/', methods=['POST'])
def receive():
    message = request.get_json()
    group_id = message["group_id"]
Example #7
0
import os
import argparse
import requests
import mebots
from threading import Thread

from flask import Flask, request

app = Flask(__name__)
bot = mebots.Bot('cleverbot', os.environ.get('BOT_TOKEN'))


class CleverBot:
    _API_ROOT = 'https://cleverbot.io/1.0/'

    def __init__(self, user, key, group_id):
        self.user = user
        self.key = key
        self.nick = f'GroupMe_{group_id}'

        body = {'user': user, 'key': key, 'nick': self.nick}
        requests.post(self._API_ROOT + 'create', data=body)

    def query(self, text):
        body = {
            'user': self.user,
            'key': self.key,
            'nick': self.nick,
            'text': text
        }
Example #8
0
#!/usr/bin/env python3

import requests, re, datetime, bs4, time, sys, json
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter, SecondLocator
from flask import Flask
from flask import request
import mebots


DEBUG = False
GROUPME_IMAGE_SERVICE_TOKEN = ""

app = Flask(__name__)
bot = mebots.Bot("crosscountrybot", os.environ["BOT_TOKEN"])

def plotTimes(group_id, data):
    formatter = DateFormatter('%m-%d-%y')
    x = data["x"]
    y = data["y"]
    _, axes = plt.subplots(1, data["years"], sharey=True)
    if len(data['boundaries']) == 0:
        sendMessage(group_id, text=f'{data["name"]} has no 5k races recorded.')
        return False

    if data["years"] == 1:
        axes = [axes]
    if DEBUG:
        print(f'Starting plot for {data["name"]}... ',end='')
    for i in range(data['years']):
Example #9
0
import os
import requests
import mebots

from flask import Flask, request

app = Flask(__name__)
bot = mebots.Bot('your_bot_shortname_here', os.environ['BOT_TOKEN'])


@app.route('/', methods=['GET'])
def home():
    return 'You could put any content here you like, perhaps even a homepage for your bot!'


@app.route('/', methods=['POST'])
def receive():
    data = request.get_json()
    group_id = data["group_id"]
    print('Incoming message:')
    print(data)

    # Prevent self-reply
    if data['sender_type'] != 'bot':
        if data['text'].startswith('/ping'):
            send(data['name'] + ' pinged me!', group_id)

    return 'ok', 200


def send(msg, group_id):
Example #10
0
import mebots
import os

GROUP_ID = 49940116

# "bot" name can be whatever is most convenient for your program
bot = mebots.Bot("test", os.environ["BOT_TOKEN"])

# Get all bot instances
print(bot.instances())
# Given a group's ID, get the ID of the bot instance in that group
print(bot.instance(GROUP_ID).id)
Example #11
0
import os
import requests
import mebots

from flask import Flask, request

from website import Website

app = Flask(__name__)
bot = mebots.Bot('globalistbot', os.environ.get('BOT_TOKEN'))
website = Website()

PREFIX = '$'


def process(message):
    # Prevent self-reply
    if message['sender_type'] != 'bot':
        if message['text'].startswith(PREFIX):
            args = message['text'].lstrip(PREFIX).split()
            command = args.pop(0)
            query = ' '.join(args)
            if command == 'search':
                return website.search(query)


# Endpoint
@app.route('/', methods=['POST'])
def receive():
    message = request.get_json()
    group_id = message["group_id"]