Esempio n. 1
0
    def __init__(self, config):
        #  Slack config
        slack_api_token = config.get('slack', 'api_token')
        self._slack_username = config.get('slack', 'bot_username')
        self._slack = SlackSocket(slack_api_token, translate=True)
        self._slack_events = self._slack.events()
        self._slack_sessions = {}
        self._slack_event_handler = Thread(target=self._handle_slack_events,
                                           name='event_handler')

        #  Frotz config
        self._frotz_binary = config.get('frotz', 'path')
        self._frotz_story_file = config.get('frotz', 'story')

        #  Logging config
        self._logs_dir = config.get('frotzlack', 'logs_dir')
        error_log_path = os.path.join(self._logs_dir, 'frotzlack.log')
        self._global_handler = RotatingFileHandler(error_log_path)
        self._global_handler.setLevel(logging.WARNING)

        #  Other config
        self._admins = config.get('frotzlack', 'admins').split(',')

        self._stop_requested = False
        self._slack_event_handler.start()
Esempio n. 2
0
    def __init__(self, debug=False):
        """Initializes our Slack bot and slack bot token. Will exit if the required environment
        variable is not set.
        """

        self._SLACK_BOT_TOKEN = os.environ.get("SLACK_BOT_TOKEN")
        if self._SLACK_BOT_TOKEN is None:
            sys.exit("ERROR: environment variable SLACK_BOT_TOKEN is not set")

        self._slacker = Slacker(self._SLACK_BOT_TOKEN)
        self._slackSocket = SlackSocket(self._SLACK_BOT_TOKEN, translate=False)
        self._BOT_ID = self._slacker.auth.test().body["user_id"]
        self._registrations = {
        }  # our dictionary of event_types to a list of callbacks

        if debug:
            print("DEBUG!")
            logger.removeHandler(null_handler)
            logger.addHandler(StreamHandler())
            logger.setLevel(logging.DEBUG)

        logger.info(
            f"set bot id to {self._BOT_ID} with name {self.helper_user_id_to_user_name(self._BOT_ID)}"
        )
        logger.info("initialized")
Esempio n. 3
0
    def __init__(self, debug=False):
        """Initializes our Slack bot and slack bot token. Will exit if the required environment
        variable is not set.

        :param debug: Whether or not to use default a Logging config
        """

        self._SLACK_BOT_TOKEN = os.environ['HERREN_TOKEN']
        # self._SLACK_BOT_TOKEN = os.environ['TEST_TOKEN']
        if self._SLACK_BOT_TOKEN is None:
            sys.exit("ERROR: environment variable SLACK_BOT_TOKEN is not set")

        self._slacker = Slacker(self._SLACK_BOT_TOKEN)
        self._slackSocket = SlackSocket(self._SLACK_BOT_TOKEN, translate=False)
        self._BOT_ID = self._slacker.auth.test().body["user_id"]
        self._registrations = {
        }  # our dictionary of event_types to a list of callbacks

        if debug:
            # Enable logging for our users
            logger.addHandler(StreamHandler())
            logger.setLevel(logging.DEBUG)

        logger.info(
            f"set bot id to {self._BOT_ID} with name {self.helper_user_id_to_user_name(self._BOT_ID)}"
        )
        logger.info("initialized")
Esempio n. 4
0
 def monitor_new_slack(self, team):
     s = SlackSocket(team.bot_access_token,
                     translate=False,
                     event_filters=['message'])
     t = Thread(name="Slackmonitor, team: " + team.team_name,
                target=self.monitor_slack_events,
                args=[s, team.access_token, team.team_name])
     t.start()
Esempio n. 5
0
    def __init__(self, config):
        self.s = SlackSocket(config['slack'].get('token'))

        # Is this a good way to handle mongo connection? Seems weird.
        # TODO check for connection timeout
        self.mongo = mongoengine
        self.mongo.connect(config['mongo'].get('db'),
                           host=config['mongo'].get('host'),
                           port=config['mongo'].getint('port'))
Esempio n. 6
0
 def monitor_all_slacks(self):
     for team in self.config.teams:
         s = SlackSocket(team.bot_access_token,
                         translate=False,
                         event_filters=['message'])
         t = Thread(name="Slackmonitor, team: " + team.team_name,
                    target=self.monitor_slack_events,
                    args=[s, team.access_token, team.team_name])
         t.start()
Esempio n. 7
0
    def connect(self):
        logger.info("Connecting...")

        self._slacker = Slacker(self._SLACK_BOT_TOKEN)
        self._slackSocket = SlackSocket(self._SLACK_BOT_TOKEN, translate=False)
        self._BOT_ID = self._slacker.auth.test().body["user_id"]
        self._registrations = {
        }  # our dictionary of event_types to a list of callbacks

        logger.info(
            f"Connected. Set bot id to {self._BOT_ID} with name {self.helper_user_id_to_user_name(self._BOT_ID)}"
        )
    def connect(self):
        """Connect to underlying SlackSocket.

        Additionally stores conections for future usage.
        """
        # Disable all the attribute-defined-out-init in this function
        # pylint: disable=attribute-defined-outside-init

        logger.info("Connecting...")

        self._python_slackclient = WebClient(self._slack_bot_token)
        self._slack_socket = SlackSocket(self._slack_bot_token)
        self._bot_id = self._python_slackclient.auth_test()["bot_id"]

        logger.info(
            "Connected. Set bot id to %s with name %s",
            self._bot_id,
            self.helper_user_id_to_user_name(self._bot_id),
        )
Esempio n. 9
0
def notify():
    teams = {}

    with open('teams.pickle', 'rb') as f:
        teams = pickle.load(f)
        print(teams.keys())

    for team_key in teams:
        team = teams[team_key]

        SLACK_TOKEN = ''
        with open('tokens.pickle', 'rb') as f:
            tokens = pickle.load(f)
            print(tokens)
            SLACK_TOKEN = tokens[team_key][0]

        slack_socket = SlackSocket(SLACK_TOKEN, translate=True)
        slack = Slacker(SLACK_TOKEN)

        people = team['people']
        channels = team['channels']

        for key in people:
            person = people[key]
            print(person.name)

            compute_person_channel_morale(slack, people, channels, person.name)
            morale = person.morale
            print(morale)

            if type(morale) is float and morale < 0.15:
                try:
                    res = slack.im.open(person._id)
                    c_id = res.body['channel']['id']
                    msg = slack_socket.send_msg(
                        'hey, you seem to be a bit down today. is everything alright?',
                        channel_id=c_id)
                    if msg.sent:
                        print('message sent to: ' + person.name)
                except:
                    pass
Esempio n. 10
0
import time
import json
import re
import traceback
import requests
import threading
from slacksocket import SlackSocket
from slackclient import SlackClient
from block_io import BlockIo
version = 2 # API version
from key_pin import *
block_io_doge = BlockIo(blockio_api_doge_key, blockio_secret_pin, version) 
block_io_btc = BlockIo(blockio_api_btc_key, blockio_secret_pin, version)
block_io_ltc = BlockIo(blockio_api_ltc_key, blockio_secret_pin, version)
ss = SlackSocket(slack_token,translate=False) # translate will lookup and replace user and channel IDs with their human-readable names. default true. 
sc = SlackClient(slack_token)
url = 'https://shapeshift.io/shift'
coincap_doge = 'http://www.coincap.io/page/DOGE'
coincap_btc = 'http://www.coincap.io/page/BTC'
coincap_ltc = 'http://www.coincap.io/page/LTC'
cryptocomp_doge = 'https://www.cryptocompare.com/api/data/price?fsym=DOGE&tsyms=USD'
cryptocomp_btc = 'https://www.cryptocompare.com/api/data/price?fsym=BTC&tsyms=USD'
cryptocomp_ltc = 'https://www.cryptocompare.com/api/data/price?fsym=LTC&tsyms=USD'
shapeshift_pubkey = "06c04cfc9f18632d50ca546ba4f3dc49edcaf6217e3cefe73ed98d92cc2f37e764df8371fc3d23847aee4a4d65bdaa2defd30ca43311378827a94146feb017cb"
min_amount = {'doge': 2.0, 'ltc': 0.002, 'btc': 0.0002}

def main():
	time.sleep(1)
	for event in ss.events():
		j = json.loads(event.json)
		if j['type'] != 'message':
                readSuccess = False

            if readSuccess:
                if "<@U1ES5EE1J|cleverbot>" in msg:
                    output = respondToMessage(msg, data)
                    output += "\nSUCCESS:  Got message and responded!\n"
                elif "<@U1ES5EE1J>" in msg:
                    output = respondToMessage(msg, data)
                    output += "\nSUCCESS:  Got message and responded!\n"
                else:
                    output = "\nERROR: Cleverbot not called in msg: " + msg + "\n"
                    print(output)
            else:
                output = "\nERROR:: Could not read message body. Cleverbot might " \
                         "have been mentioned by a status change\n"
            # Logging
            with open('./log.txt', 'a') as f:
                f.write(output)

        time.sleep(1)


# -------------------------------------------------------------------

# START IT!
token = slacktools.getSlackToken()
sc = SlackSocket(token, translate=True)
cleverbot = cb()

go()
Esempio n. 12
0
import json
import os
import sys
from slacksocket import SlackSocket

SLACK_API_KEY = os.environ["SLACK_API_KEY"]

s = SlackSocket(SLACK_API_KEY)


def mainloop():
    for event in s.events():

        obj = json.loads(event.json)

        if not obj["type"] == "message":
            continue

        user = obj["user"]
        message = obj["text"]
        channel = obj["channel"]

        if 'VEP' not in message.upper():
            continue

        reply_text = "@{} Pythonはいいぞ!".format(user)

        if __debug__:
            print(reply_text)
        else:
            try:
Esempio n. 13
0
def helpme():
    return "+ = Snelheid verhogen\n- = Snelheid verlagen\n} = Pitch verhogen\n{ = Pitch verlagen\n] = Volume verhogen (Nee Tim)\n[ = Volume verlagen\n$ = Achterstevoren afspelen\n~ = Kill all\n& = Heen en weer"


async def handler(fplayer, bplayer, tplayer):
    while True:
        log.debug("in handler loop")
        event = await s.get_event_aio()
        log.debug("processing: " + event.json)

        data = json.loads(event.json)
        log.debug("data type: " + data['type'])
        log.debug("text in data: " + str('text' in data))

        if event.event.get(
                'channel') == config.slack_channel and event.event.get(
                    'type') == 'message':
            handle_cmd(event.event.get('text'), event.event.get('user'),
                       fplayer, bplayer, tplayer)


soundq_fore = AiterQueue()
soundq_back = AiterQueue()
soundq_third = AiterQueue()

s = SlackSocket(config.api_key, asyncio.get_event_loop(), translate=True)
fplayer = asyncio.get_event_loop().create_task(playsounds(soundq_fore))
bplayer = asyncio.get_event_loop().create_task(playsounds(soundq_back))
tplayer = asyncio.get_event_loop().create_task(playsounds(soundq_third))
asyncio.get_event_loop().run_until_complete(handler(fplayer, bplayer, tplayer))