def request_access(request_data): conn,cursor = connect() chatId = str(request_data['message']['chat']['id']) firstName = "" if ('first_name' in request_data['message']['chat']): firstName = request_data['message']['chat']['first_name'] lastName = "" if ('last_name' in request_data['message']['chat']): lastName = request_data['message']['chat']['last_name'] tusername = request_data['message']['from']['username'] message = "" try: query = "select * from pending_requests where chatId = {0}".format(chatId) result = cursor.execute(query) if (result > 0): message = "You have already requested for access. Please wait patiently the admin will soon accept your request\n" else: query = "select * from accepted_users where chatId = {0}".format(chatId) result = cursor.execute(query) if (result > 0): message = "You already have access\n" else: query = "insert into pending_requests (chatId,firstName,lastName,tusername) values ('{0}','{1}','{2}','{3}');".format(chatId,firstName,lastName,tusername) cursor.execute(query) conn.commit() send_admin_message("You have a pending request from " + tusername) message = "The admin will be notified about your request to use this bot. Once he accepts it you will be able to get emails. You can keep modifiying your preferences till then" send_message(chatId,message) conn.close() except (MySQLdb.Error, MySQLdb.Warning) as e: app.logger.info(e) send_error_message(chatId) conn.close()
def ai(bot, update): if update.message.from_user.language_code == 'uk': lng = uk elif update.message.from_user.language_code == 'ru': lng = ru elif update.message.from_user.language_code == 'en': lng = en else: lng = en if os.path.exists('info/ban/' + update.message.from_user.username): update.message.reply_text(lng.ban) else: request = apiai.ApiAI('f0d8dbdcf1534f6d99123bca2cafaa51').text_request( ) # Токен API к Dialogflow request.lang = 'ru' # На каком языке будет послан запрос request.session_id = 'AIMASHDB' # ID Сессии диалога (нужно, чтобы потом учить бота) request.query = update.message.text # Посылаем запрос к ИИ с сообщением от юзера responseJson = json.loads(request.getresponse().read().decode('utf-8')) response = responseJson['result']['fulfillment'][ 'speech'] # Разбираем JSON и вытаскиваем ответ # Если есть ответ от бота - присылаем юзеру, если нет - бот его не понял if response: bot.send_message(update.message.chat_id, response) else: bot.send_message(update.message.chat_id, 'Я Вас не совсем поняла!')
def start_command(message): bot.send_message( message.chat.id, 'Greetings! I can show you exchange rates.\n' + 'To get the exchange rates press /exchange.\n' + 'To get help press /help.' )
def send_start_message(message): # бот встречает нас start_message = tools_and_constants.HelloWords.hello.format( message.chat.first_name, tools_and_constants.CommandsNames.with_slash( tools_and_constants.CommandsNames.help)) bot.send_message(message.chat.id, start_message)
def remove_mail(chatId, mails): mails = list(set(mails)) conn, cursor = connect() not_present = [] removed_mail = [] for mail in mails: try: if (is_valid_mail(mail)): query = "delete from mail where mail_id = '{0}';".format(mail) cursor.execute(query) conn.commit() removed_mail.append(mail) else: not_present.append(mail) except (MySQLdb.Error, MySQLdb.Warning) as e: app.logger.info(e) send_error_message(chatId) conn.close() return message = "No changes done\n" if (len(removed_mail) > 0): message = "Deleted the following from the database\n" for mail in removed_mail: message = message + " ->" + mail + '\n' if (len(not_present)): message = message + "The following do not exist in the database\n" for mail in not_present: message = message + " ->" + mail + '\n' send_message(chatId, message) return
def update(i, html): global exams global new_exams global counter while True: soup = BeautifulSoup(html, "lxml") table = soup.find('table', id='ctl00_ContentPlaceHolder1_ExamSummary') for row in table.find_all('tr')[1:]: cols = row.find_all('td') if re.search('-11', cols[0].nobr.text): ex_date = str(cols[0].nobr.text)[-11::] date = datetime.strptime(str(ex_date[1:]), "%d.%m.%Y") start_date = datetime.strptime('20180525', "%Y%m%d") if start_date < date: new_exams.append({ "Экзамен": cols[0].nobr.text, "Работ": cols[1].nobr.text, "Результатов": cols[2].nobr.text }) co = 0 for q in range(0, i): if (exams[q]['Результатов'] == new_exams[q]['Результатов']): co = co + 1 else: counter = 1 bot.send_message( "Обновление результатов по %s : Было результатов: %s | Стало результатов: %s" % (new_exams[q]['Экзамен'], str(exams[q]['Результатов']), str(new_exams[q]['Результатов']))) if counter == 1: main() counter = 0 bot.timer()
def join(bot, update): if update.message.chat.type == 'private': if update.message.text == '/start join': status = game.status game.add_player(update.message.from_user, update.message.chat) enqueue(update.message.reply_text, Strings.JOINED) send_group_message( Strings.NAMED_JOINED.format('@' + update.message.from_user.username)) if status is game.Status.PREPARING and game.status is game.Status.OPEN: enqueue(join_message.edit_text, Strings.JOIN, reply_markup=InlineKeyboardMarkup([[ InlineKeyboardButton(Strings.JOIN_BUTTON, url=Settings.BOT_URL + '?start=join'), InlineKeyboardButton(Strings.WATCH_BUTTON, url=Settings.BOT_URL + '?start=watch') ]])) send_message(update.message.chat.id, Strings.START, reply_markup=InlineKeyboardMarkup([[ InlineKeyboardButton(Strings.START_BUTTON, callback_data='start') ]])) elif update.message.text == '/start watch': game.add_audience(update.message.from_user, update.message.chat) enqueue(update.message.reply_text, Strings.WATCHED) send_group_message( Strings.NAMED_WATCHED.format( '@' + update.message.from_user.username)) else: raise
def filter_help_response(user_arguments, message_id): # получаем все возможные значения для данного фильтра name_of_filter = [None, None, None] found = False for i in range(1, bot.job_parameters.cnt_of_parameters + 1): if int(user_arguments[0]) == i: # определяем имя нашего фильтра name_of_filter = bot.job_parameters.get_property_name([i, "", ""]) found = True break if found: # выводим возможные значения фильтра for find_filter in filters_handler.FilterConstants.names: if name_of_filter == find_filter.get_name: possible_values = tools_and_constants.ListTitle.possible_values for i in range(len(find_filter.valid_values)): possible_values += "\n{0}. ".format(i + 1) for value in find_filter.valid_values[i]: possible_values += " {0},".format(value) possible_values = possible_values[:-1] + ";" possible_values = possible_values[:-1] + "." bot.send_message(message_id, possible_values) else: bot.send_message(message_id, tools_and_constants.ErrorMessage.no_such_filter)
def sync(message): id = message.chat.id if (message.chat.type == 'group'): send_message( id, 'Эта команда не может быть выполнена в групповых чатах в целях безопасности ваших данных' ) else: connection = data.create_connection(dbname) elems = data.execute_read_query(connection, keys_handler.select_keys(id)) if elems == []: send_message(id, 'Вы не добавили api ключи. Посмотрите /help') else: open, secret = elems[0] handles, status = cf.get_friends(open, secret) if handles is None: if 'Incorrect API key' in status: send_message(id, 'Вы указали неправильные ключи') else: send_message( id, 'Что-то пошло не так. Скорее всего, codeforces сейчас недоступен.' ) logger.critical(status) else: send_message( id, util.__add_handles(id, list(map(lambda x: x.lower(), handles)), handles, connection)) connection.close()
def magisk(bot, update): bot.send_message( chat_id=update.message.chat_id, text= "*PUEDES DESCARGAR MAGISK DESDE *[AQUÍ](http://tiny.cc/latestmagisk)", parse_mode=telegram.ParseMode.MARKDOWN, reply_to_message_id=update.message.message_id)
def message(update, context): eta, text = None, None mo = RE_MESSAGE.match(update.message.text) if mo: eta = arrow.get(arrow.get(mo.group(1)).datetime, tz.gettz()) text = mo.group(2) else: try: eta = arrow.get(parse(update.message.text, allowed_results=(datetime,), tz=os.environ['TZ'])) text = get_last_clear_text(update.message.text) except: logging.exception('error parsing date') logging.debug('eta: %s'%eta) logging.debug('text: %s'%text) if text: sqs.delay_message( eta = eta.to('UTC').naive, text = text, chat_id = update.effective_chat.id, reply_to_message_id = update.message.message_id, quote = True ) bot.send_message( text = _('will notify you at: %s')%eta.format(), chat_id = update.effective_chat.id, reply_to_message_id = update.message.message_id, quote = True ) else: start(update, context)
def roms(bot, update): bot.send_message( chat_id=update.message.chat_id, text= "*TUTORIAL PARA INSTALAR ROMS, GRACIAS A CARLOS*\n\n*PUEDES VERLO *[AQUÍ](https://drive.google.com/open?id=1VXrKxWp4Kan4tvycnXhd0SR3npv3OwXT)", parse_mode=telegram.ParseMode.MARKDOWN, reply_to_message_id=update.message.message_id)
def logcat(bot, update): bot.send_message( chat_id=update.message.chat_id, text= "*COMO HACER UN LOG*\n\n[AQUÍ](https://wiki.lineageos.org/logcat.html)", parse_mode=telegram.ParseMode.MARKDOWN, reply_to_message_id=update.message.message_id)
def selinux(bot, update): bot.send_message( chat_id=update.message.chat_id, text= "*SELinuxModeChanger v10.0, Para poner el telefono en PERMISIVO*\n\n\n*Puedes descargarlo desde* [AQUÍ](https://github.com/MrBIMC/SELinuxModeChanger/releases/download/10.0/app-release-v10.apk)", parse_mode=telegram.ParseMode.MARKDOWN, reply_to_message_id=update.message.message_id)
def gcam(bot, update): bot.send_message( chat_id=update.message.chat_id, text= "*PUEDES DESCARGAR LA CAMARA DE GOOGLE DESDE *[AQUÍ](https://www.celsoazevedo.com/files/android/google-camera)", parse_mode=telegram.ParseMode.MARKDOWN, reply_to_message_id=update.message.message_id)
def rr(bot, update): bot.send_message( chat_id=update.message.chat_id, text= "*Puedes descargar la ultima RR desde *[AQUÍ](https://sourceforge.net/projects/resurrectionremix-oreo/files/zl1/)", parse_mode=telegram.ParseMode.MARKDOWN, reply_to_message_id=update.message.message_id)
def add_mail(chatId, mails): mails = list(set(mails)) conn, cursor = connect() already_exist = [] added_mail = [] for mail in mails: try: if (is_valid_mail(mail)): already_exist.append(mail) else: query = "insert into mails (mail_id) values ('{0}');".format( mail) cursor.execute(query) conn.commit() added_mail.append(mail) except (MySQLdb.Error, MySQLdb.Warning) as e: app.logger.info(e) send_error_message(chatId) conn.close() return message = "No changes done\n" if (len(added_mail) > 0): message = "Inserted the following into the database\n" for mail in added_mail: message = message + " ->" + mail + '\n' if (len(already_exist)): message = message + "The following already exist in the database\n" for mail in already_exist: message = message + " ->" + mail send_message(chatId, message) return
def test_send_message_fitting(bot_arg): """ Test sending a message that is shorter than the maximum allowed by telegram. """ msg = 'hello world' send_message(msg, bot_arg, 1) assert bot_arg.msg_log[0] == msg
def index(): json_body = request.get_json() response, status_code = bot.determine_response(json_body) message = response.get("message") picture_url = response.get("picture_url") if message: bot.send_message(message, picture_url) return response, status_code
def favorite_vacancies_help(message): help_message = "Бот умеет добавлять, удалять и показывать избранные вакансии с сайта superjob.ru. " \ "Для того, чтобы совершать эти действия, тебе подтребуется авторизоваться. " \ "Смотри подробнее:" \ + "\n/help31. Добавление избранных вакансий;" \ + "\n/help32. Удаление из избранных вакансий;" \ + "\n/help33. Вывод избранных вакансий." bot.send_message(message.chat.id, help_message)
def find_vacancies_help(message): help_message = "Чтобы искать вакансии, необходимо ввести команду /find, " \ "поставить интересующие фильтры и ввести одно из слов:\n" \ + ", ".join(tools_and_constants.CommandsNames.words_for_find) \ + "\nЧтобы вывести больше вакансий, введите одно из следующих значений:\n" \ + ", ".join(tools_and_constants.CommandsNames.add_on_page) \ + "\n/help11. Подробнее о фильтрах." bot.send_message(message.chat.id, help_message)
def pull(bot, update): pass g = git.cmd.Git('~/leeco') g.pull() bot.send_message(chat_id=update.message.chat_id, text="*Actualizado*", parse_mode=telegram.ParseMode.MARKDOWN, reply_to_message_id=update.message.message_id) Thread(target=stop_and_restart).start()
def main(): answer = get_message() if answer != None: chat_id = answer['chat_id'] text = answer['text'] # if text == '/btc': send_message(chat_id, get_btc())
def send_help_message(message): # тут будет помощь help_message = "Добро пожаловать в меню справки. Что тебя интересует?" \ + "\n/help1. Поиск вакансий;" \ + "\n/help2. Авторизация;" \ + "\n/help3. Избранные вакансии;" \ + "\n/help4. Дополнительные возможности;" \ + "\n/help5. Об авторе и программе." bot.send_message(message.chat.id, help_message)
def add_vacancies(message_id): # выводим еще вакансии try: for i in range(bot.last_position, bot.last_position + bot.job_parameters.cnt): print_vacancies(message_id, i) except Exception: bot.send_message( message_id, tools_and_constants.ErrorMessage.end_of_vacancies_list)
def send_morning_meme(): print("Sending morning meme..") bot_name = bot.get_bot_name() json_body["text"] = bot_name + " meme" response, status_code = bot.determine_response(json_body) message = response.get("message") picture_url = response.get("picture_url") if message: bot.send_message(message, picture_url)
def wrapped(bot, update, *args, **kwargs): user_id = update.effective_user.id if user_id not in get_admin(): bot.send_message(chat_id=update.message.chat_id, text="No tienes permiso para hacer eso.", parse_mode=telegram.ParseMode.MARKDOWN, reply_to_message_id=update.message.message_id) return return func(bot, update, *args, **kwargs)
def get_pending_requests(chatId): conn, cursor = connect() query = "select * from pending_requests" cursor.execute(query) requests = cursor.fetchall() message = str(len(requests)) + " pending requests\n" for request in requests: message = message + request[3] + '\n' send_message(chatId, message)
def find_vacancies_filters_help(message): help_message = "Чтобы подбирать нужные вам вакансии в боте существуют специальные фильтры. " \ "Меню фильтров появляется после вызова команды /find. " \ "Чтобы узнать, какие значения может принимать данный фильтр, " \ "введите его номер из меню, после чего вы можете посмотреть возможные значения и ввести нужное. " \ "Также, если вы знаете доступные значения, " \ "вы можете ввести номер фильтра и его значение через пробел. " \ "Чтобы посмотреть установленные фильтры, введите команду /show. " \ "Для отмены введенного фильтра наберите номер фильтра и символ '-' через пробел." bot.send_message(message.chat.id, help_message)
def start_enter_searching_params(message): # включаем режим ввода фильтров и самого поиска bot.is_find = True bot.reset_filters() # сбрасываем все существующие фильтры и генерируем список новых filters_menu = tools_and_constants.ListTitle.filters for filter_name in filters_handler.FilterConstants.names: filters_menu += "\n{0}. {1}".format(filter_name.get_name[0], filter_name.get_name[2]) bot.send_message(message.chat.id, filters_menu)