def alreadyExist(tg_id): curs.execute(""" SELECT admintoken FROM privatetokens WHERE telegram_id = '{}' """.format(str(tg_id))) data = curs.fetchall() if len(data) > 0: return data[0][0] else: return None
def chatInState(used_id, chat_state): curs.execute(""" select chat_state from telegram_bot where username like '{}' """.format(used_id)) data = curs.fetchall() # Если чат в стейте - Тру. Иначе Фолс. Проверка на то, чтоб бот не спамил if chat_state == data[0][0]: return True else: return False
def userInDatabase(user_id): curs.execute(""" SELECT username FROM telegram_bot where username like '{}' """.format(user_id)) data = curs.fetchall() # Если юзер зареган в боте - тру, иначе фолс. Проверка на антиспам бота if len(data) > 0: return True else: return False
def botStarted(user_id): curs.execute(""" select chat_started from telegram_bot where username like '{}' """.format(user_id)) data = curs.fetchall() try: if len(data) > 0: if data[0][0] != "None": if data[0][0]: return True else: return False else: return False except Exception: bot.send_message(user_id, "I can't understand you. Try to start me...") return False
def dbAddTicketPath(user_id, filename): ''' if len(compare) > 0: curs.execute(""" UPDATE tickets_info SET ticket_name = '{}', ticket_time ='{}' WHERE ticket_from = '{}' """.format(r'\best_hack_2020_finals\storage'+'\\'+str(user_id),str(time.ctime()), user_id)) conn.commit() curs.execute(""" UPDATE tickets_amount SET amount = (SELECT amount FROM tickets_amount) + 1 """) conn.commit() ''' curs.execute(""" INSERT INTO tickets_info VALUES ('{}', '{}', '{}') """.format( r'\best_hack_2020_finals\storage' + '\\' + str(filename.hexdigest()), str(time.ctime()), user_id)) conn.commit() curs.execute(""" UPDATE tickets_amount SET amount = (SELECT amount FROM tickets_amount) + 1 """) conn.commit()
def setChatInState(user_id, chat_state): curs.execute(""" UPDATE telegram_bot set chat_state = '{}' WHERE username = '******' """.format(chat_state, user_id)) conn.commit()
def answerQuestionFunc(message): data = None if botStarted(message.from_user.id): # Проверка на галочку при вопросе curs.execute(""" SELECT question_ans FROM telegram_bot WHERE username = '******' """.format(message.from_user.id)) data = curs.fetchall() if len(data) > 0: if data[0][0] is not False: if data[0][0]: curs.execute(""" UPDATE telegram_bot set question_ans = '{}' WHERE username = '******' """.format(False, message.from_user.id)) conn.commit() bot.send_message(message.chat.id, "I've got your question: " + message.text) print(readFromScratch(message.text)) if readFromScratch(message.text) is not None: bot.send_message( message.chat.id, phr_answ.splitlines()[readFromScratch( message.text)]) telebotStartButtons(message) else: bot.send_message( message.chat.id, "Простите, я не могу ответить на этот вопрос..") telebotNewTicketButtons(message) # Проверка на галочку на создании тикета (пишу в 7 утра прив) curs.execute(""" SELECT request from telegram_bot WHERE username = '******' """.format(message.from_user.id)) ticket_create = curs.fetchall() if len(ticket_create) > 0: if ticket_create[0][0] is not False: if ticket_create[0][0]: curs.execute(""" UPDATE telegram_bot SET request = '{}' WHERE username = '******' """.format(False, message.from_user.id)) conn.commit() bot.send_message(message.chat.id, "I've got your ticket: \n" + message.text) createTicketFile(message.from_user.id, message.text) telebotStartButtons(message) elif str(message.text).lower() == '/start' or str( message.text).lower() == '!start' and data is not True: # print(message.from_user.id) if not userInDatabase(message.from_user.id): logInChat(message.from_user.id) if not chatInState(message.from_user.id, 'start'): setChatInState(message.from_user.id, 'start') bot.send_message( message.chat.id, """ Вас приветствует бот-помощник. Позвольте узнать - чем я могу вам помочь? (Тут должны появиться кнопки. Необходимо выбрать нужную опцию). """) telebotStartButtons(message) else: bot.send_message(message.from_user.id, 'Cant understand you. Try: /start')
def logInChat(user_id): curs.execute(""" INSERT INTO telegram_bot VALUES ('{}', '{}', {}, {}) """.format(user_id, None, False, True)) conn.commit()
def botQueryHandler(call): if botStarted(call.message.chat.id): bot.answer_callback_query(callback_query_id=call.id, text='Обрабатываю данные.') answer = '' if call.data == 'questions': answer = "Вывожу список вопросов и ответов на них :)" elif call.data == 'answer_question': answer = "Прошу, задайте Ваш вопрос и я постараюсь на него ответить :)" elif call.data == 'apply': answer = "Введите ваше ФИО и заявку на рассмотрение: " elif call.data == 'ticket_true': answer = "Перенаправляю на составление тикета" elif call.data == 'ticket_false': answer = 'Перенаправляю в главное меню :)' elif call.data == 'aToken': curs.execute(""" SELECT telegram_id FROM logins WHERE requiretoken = True """) dt = curs.fetchall() print(dt) if str(call.from_user.id) in str(dt): genToken = generateToken() answer = f"Here is your Token for admin lk: {genToken}" if alreadyExist(str(call.from_user.id)) is not None: curs.execute(""" UPDATE privatetokens SET admintoken = '{}' WHERE telegram_id = '{}' """.format(genToken, str(call.from_user.id))) conn.commit() else: curs.execute(""" INSERT INTO privatetokens VALUES ('{}', '{}') """.format(genToken, str(call.from_user.id))) conn.commit() else: answer = "You have no admin perms :(" else: answer = "Chose any button please." setChatInState(call.message.chat.id, call.data) bot.send_message(call.message.chat.id, answer) if call.data == 'answer_question': curs.execute(""" UPDATE telegram_bot set question_ans = '{}' WHERE username = '******' """.format(True, call.message.chat.id)) conn.commit() elif call.data == 'questions': bot.send_message(call.message.chat.id, ans_for_q) setChatInState(call.message.chat.id, 'questions') elif call.data == 'apply': curs.execute(""" UPDATE telegram_bot set request = '{}' WHERE username = '******' """.format(True, call.message.chat.id)) conn.commit() bot.send_message( call.message.chat.id, """ Правила составления тикета: Первая строка - Ваше ФИО. Желательно далее пропустить строку. Начиная с 3тьей: основная суть Вашего обращения. """) setChatInState(call.message.chat.id, 'questions') elif call.data == 'ticket_false': telebotStartButtons(call.message) else: bot.send_message(call.message.chat.id, 'Cant understand you. Try: /start')