Ejemplo n.º 1
0
def modeChange(update, context):
    chatID = BotWrapper.chatID(update)

    if str(chatID) in BotWrapper.getUserData():

        msg = update.message.text.split()[0][1:]

        led.stringToMode(msg.lower())

        BotWrapper.sendMessage(chatID, "Switched to " + str(msg))
Ejemplo n.º 2
0
def begin(update, context):
    usrData = bot.user(bot.chatID(update))

    if usrData is None:
        context.bot.sendMessage(bot.chatID(update), notLeaderMessage)
        return
    reply_markup = ReplyKeyboardMarkup([["3", "4"], ["5", "6"], ["7", "8"]])
    bot.sendMessage(bot.chatID(update),
                    "How many players are you? (1-8)",
                    rpl_markup=reply_markup)

    usrData[2]["chat_state"] = 1
    bot.modifyUser(bot.chatID(update), usrData)
Ejemplo n.º 3
0
def admin(update, context):
    user = update.message.from_user
    chatID = BotWrapper.chatID(update)
    print(chatID)
    BotWrapper.sendMessage(chatID, "Request has been sent...")
    button_list = [
        InlineKeyboardButton("Ja", callback_data=chatID),
        InlineKeyboardButton("Nein", callback_data="no")
    ]
    reply_markup = InlineKeyboardMarkup(
        BotWrapper.build_menu(button_list, n_cols=1))
    message = '{} (@{}) wants to admin, accept request?'.format(
        user['first_name'], user['username'])
    BotWrapper.getBot().sendMessage(config.admin,
                                    message,
                                    reply_markup=reply_markup)
Ejemplo n.º 4
0
def menu_actions(update, context):

    try:
        bot.getBot().delete_message(
            chat_id=update.effective_chat.id,
            message_id=update.effective_message.message_id)
    except Exception as e:
        print(e)

    inp = str(update.callback_query.data).split("#")

    chat = inp[len(inp) - 1]

    nextData = inp[0]
    inp.pop(0)

    next = ""
    for a in inp:
        next += a + "#"
    next = next[:len(next) - 1]

    if nextData == 'X':
        button_list = [InlineKeyboardButton("Next", callback_data=next)]
        reply_markup = InlineKeyboardMarkup(
            bot.build_menu(button_list, n_cols=1))
        bot.sendMessage(str(chat),
                        "Give the phone to the next player",
                        isHTML=True,
                        rpl_markup=reply_markup)
        return

    reply_markup = None

    if len(inp) > 1:
        loc = nextData.split(",")[0]
        job = nextData.split(",")[1]

        reply_markup = None

        if len(inp) > 2:
            button_list = [InlineKeyboardButton("Next", callback_data=next)]
            reply_markup = InlineKeyboardMarkup(
                bot.build_menu(button_list, n_cols=1))

        if job == "!":
            bot.sendMessage(str(chat),
                            "<b> 📍 Ort: </b>\n   " + "<i>Unbekannt</i>" +
                            "\n\n<b>💼 Beruf:</b>\n   🕵️ Spion",
                            isHTML=True,
                            rpl_markup=reply_markup)
        else:
            bot.sendMessage(str(chat),
                            "<b> 📍 Ort: </b>\n   " + "<i>" +
                            str(config.areas[int(loc)][0]) + "</i>" +
                            "\n\n<b>💼 Beruf:</b>\n   " +
                            str(config.areas[int(loc)][int(job)]),
                            isHTML=True,
                            rpl_markup=reply_markup)
Ejemplo n.º 5
0
def adminResponse(update, context):
    chatID = BotWrapper.chatID(update)
    try:
        BotWrapper.getBot().delete_message(
            chat_id=update.effective_chat.id,
            message_id=update.effective_message.message_id)
    except Exception as e:
        print(e)
    inp = str(update.callback_query.data)
    if inp is not "no":
        BotWrapper.modifyUser(int(inp), True)
        BotWrapper.sendMessage(inp, "You have been accepted")
        BotWrapper.sendMessage(chatID, "Request has been accepted")
    else:
        BotWrapper.sendMessage(chatID, "Request has been denied")
Ejemplo n.º 6
0
def searchURL(bot,
              chatID,
              searchURL,
              sendMessage="Starting request on beatsaver.com, please wait...",
              maxResults=10):
    timeout = 60
    options = Options()
    options.headless = True

    bot.sendMessage(chatID, sendMessage)

    driver = webdriver.Firefox(options=options)
    print(searchURL)
    driver.get(searchURL)

    try:
        element_present = EC.presence_of_element_located(
            (By.CLASS_NAME, 'outer'))
        WebDriverWait(driver, timeout).until(element_present)
    except TimeoutException:
        print("Timed out waiting for page to load")
        bot.sendMessage(chatID, "Timed out waiting for page to load")

    print("Wait for images")
    time.sleep(8 + maxResults)
    print("Done Waiting")

    html = driver.page_source

    driver.close()
    driver.quit()

    html = BeautifulSoup(html)

    songTitles = []
    songImages = []
    songInfos = []

    # Processing titels
    songTitlesRAW = html.findAll('div', {'class': 'details'})
    maxCounter = 0
    for s in songTitlesRAW:
        maxCounter += 1
        if maxCounter >= maxResults:
            break
        inner = s.find('h1', {'class': 'has-text-weight-light'})
        inner = inner.find('a').decode_contents()
        songTitles.append(inner)

    print("Done Titles")

    # Processing images
    songImagesRAW = html.findAll('div', {'class': 'cover'})
    maxCounter = 0
    for c in songImagesRAW:
        maxCounter += 1
        if maxCounter >= maxResults:
            break
        inner = c.find('img')
        inner = inner['src']
        inner = "https://www.beatsaver.com" + inner
        songImages.append(inner)

    print("Done Images")

    # Processing infos
    songInfosRAW = html.findAll('div', {'class': 'stats'})

    counter = 0
    maxCounter = 0
    for si in songInfosRAW:
        maxCounter += 1
        if maxCounter >= maxResults:
            break
        songInfos.append([])
        inner = si.findAll('li', {'class': 'mono'})
        for info in inner:
            songInfos[counter].append(info.decode_contents())

        counter += 1

    print("Done Infos")

    songCount = len(songTitles)
    maxCounter = 0
    for i in range(0, songCount):
        maxCounter += 1
        if maxCounter >= maxResults:
            break
        infos = songInfos[i]
        caption = "*" + songTitles[i] + "*\n"
        for info in infos:
            caption += info + "\n"
        bot.sendPhoto(chatID, songImages[i], captionText=caption)
Ejemplo n.º 7
0
def default(update, context):
    usrData = bot.user(bot.chatID(update))

    if usrData is not None:

        chatState = usrData[2]["chat_state"]

        if chatState == 1:
            try:
                numberInput = update.message.text
                try:
                    numberInput = int(numberInput)
                except:
                    print("Not a number")
                if numberInput > 8 or numberInput < 1:
                    bot.sendMessage(bot.chatID(update),
                                    "Choose between 1 and 8",
                                    isHTML=True)
                    return
                usrData[2]["player"] = numberInput
                usrData[2]["chat_state"] = 2
                bot.modifyUser(bot.chatID(update), usrData)

                cats = []
                cats.append(["None"])
                for i in range(0, len(config.areas)):
                    button = config.areas[i][8]["category"]
                    if button is not None:
                        cats.append([button])

                reply_markup = ReplyKeyboardMarkup(cats)
                context.bot.send_message(
                    chat_id=bot.chatID(update),
                    text="What category you want to play?",
                    reply_markup=reply_markup)

            except Exception as e:
                print("a")
                bot.sendMessage(bot.chatID(update), str(e))

        elif chatState == 2:
            try:
                #areaIdx = rdm.randint(0, len(config.areas)-1)
                areaIn = update.message.text
                possibleAreas = []

                if areaIn == "None":
                    areaIn = None
                for idx, val in enumerate(config.areas):
                    category = val[8]['category']

                    if category == areaIn:
                        possibleAreas.append(idx)

                reply_markup = ReplyKeyboardRemove()
                context.bot.send_message(chat_id=bot.chatID(update),
                                         text="Started game",
                                         reply_markup=reply_markup)

                playerInStore = len(usrData[1])
                playerInMessage = int(usrData[2]["player"])
                playerNotRegistered = playerInMessage - playerInStore
                playerNotOnPhone = playerInStore - 1
                playerOnPhone = playerNotRegistered + 1

                areaIdx = rdm.randint(0, len(possibleAreas) - 1)

                area = possibleAreas[areaIdx]
                area = config.areas[area]
                areaIdx = possibleAreas[areaIdx]
                jobs = []
                jobIdx = list(range(1, len(area) - 1))
                rdm.shuffle(jobIdx)

                if playerOnPhone < 2:
                    for i in range(0, playerInMessage - 1):
                        jobs.append("<b> 📍 Ort: </b>\n   " + str(area[0]) +
                                    "\n\n<b>💼 Beruf:</b>\n   " +
                                    area[jobIdx.pop(0)])

                    jobs.append("<b> 📍 Ort: </b>\n   " + "<i>Unbekannt</i>" +
                                "\n\n<b>💼 Beruf:</b>\n   🕵️ Spion")
                    rdm.shuffle(jobs)

                    for idx, val in enumerate(usrData[1]):

                        bot.sendMessage(val, jobs[idx], isHTML=True)
                else:
                    rdm.shuffle(jobIdx)
                    for i in range(0, 7 - playerInMessage + 1):
                        jobIdx.pop(0)

                    jobIdx.append("!")
                    rdm.shuffle(jobIdx)

                    jobIdxPhone = []
                    jobIdxOther = []

                    for i in range(0, playerOnPhone):
                        jobIdxPhone.append(jobIdx[0])
                        jobIdx.pop(0)

                    for i in range(0, playerNotOnPhone):
                        jobIdxOther.append(jobIdx[0])
                        jobIdx.pop(0)

                    for i, chatID in enumerate(usrData[1]):
                        if i == 0:
                            continue
                        idx = jobIdxOther[i - 1]
                        if idx == "!":
                            bot.sendMessage(chatID,
                                            "<b> 📍 Ort: </b>\n   " +
                                            "<i>Unbekannt</i>" +
                                            "\n\n<b>💼 Beruf:</b>\n   🕵️ Spion",
                                            isHTML=True)
                        else:
                            bot.sendMessage(chatID,
                                            "<b> 📍 Ort: </b>\n   " + "<i>" +
                                            area[0] + "</i>" +
                                            "\n\n<b>💼 Beruf:</b>\n   " +
                                            area[idx],
                                            isHTML=True)

                    callback = ""

                    for i in jobIdxPhone:
                        callback += str(areaIdx) + "," + str(i) + "#X#"

                    callback += str(bot.chatID(update))

                    button_list = [
                        InlineKeyboardButton("Next", callback_data=callback)
                    ]

                    reply_markup = InlineKeyboardMarkup(
                        bot.build_menu(button_list, n_cols=1))
                    context.bot.send_message(bot.chatID(update),
                                             "Weiter geben",
                                             reply_markup=reply_markup)

                chatState = usrData[2]["chat_state"] = 0
                bot.modifyUser(bot.chatID(update), usrData)
            except Exception as e:
                print(e)
Ejemplo n.º 8
0
def locations(update, context):
    locationMsg = "<b> 📍 Orte: </b>\n"
    for idx, loc in enumerate(config.areas):
        locationMsg += str(idx + 1) + ": " + loc[0] + "\n"
    bot.sendMessage(bot.chatID(update), locationMsg, isHTML=True)
Ejemplo n.º 9
0
def start(update, context):
    bot.sendMessage(bot.chatID(update), startMessage)
Ejemplo n.º 10
0
def start(update, context):
    chatID = BotWrapper.chatID(update)
    BotWrapper.sendMessage(chatID, "Your ChatID is: " + str(chatID))
Ejemplo n.º 11
0
def start(update, context):
    chatID = BotWrapper.chatID(update)
    BotWrapper.sendMessage(chatID, "Your ChatID is: " + str(chatID))


BotWrapper.addBotCommand("start", start)
BotWrapper.startBot()

while True:

    out = sender.check()
    if out is not None:

        for mail in out:
            out_string = "*Neuer Druckauftrag*\n\n"
            for key in mail:
                if key == "Email:":
                    continue
                out_string += "_" + key + "_"
                out_string += "\n   "
                out_string += mail[key]
                out_string += "\n"
            BotWrapper.sendMessage(config.chatID, out_string)
            if "file" in mail:
                BotWrapper.botBackend.dispatcher.bot.send_document(
                    chat_id=config.chatID, document=open(mail['file'], 'rb'))
                os.remove(mail['file'])

    time.sleep(10)