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))
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)
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)
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)
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")
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)
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)
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)
def start(update, context): bot.sendMessage(bot.chatID(update), startMessage)
def start(update, context): chatID = BotWrapper.chatID(update) BotWrapper.sendMessage(chatID, "Your ChatID is: " + str(chatID))
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)