def home(self, message, callback_id=None, callback_data=None): if Database(table_name='user_db').select_db( 'role', 'where telegram_id = {}'.format( message.chat.id))['result'][0]['role'] == 0: self.register_0(message) else: self.fsm_db(message, 7, 0, 'None') keyboard = self.kb_inline() #callback_button_time = self.btn_inline(text="сколько времени?", #callback_data="6, 1") #keyboard.add(callback_button_time) if Database(table_name='user_db').select_db( 'ref_acc', 'where telegram_id = {}'.format( message.chat.id))['result'][0]['ref_acc'] == 'None': callback_button_ref = self.btn_inline( text="ввести реферальную ссылку", callback_data="9, 10, None") keyboard.add(callback_button_ref) self.edit_message_text(message=message, text='домашняя страница\nвремя сервера ' + datetime.strftime( datetime.now(), "%Y-%m-%d %H:%M:%S", )) self.edit_message_reply(message, reply_markup=keyboard)
def stop_ddos(message, ddos_timer=ddos_timer): print('------------check DDoS---------------') print(message.json['from']['is_bot']) if message.json['from']['is_bot'] == False: Database(table_name='user_db').update_db( 'last_mes_user_id', '{}'.format(message.message_id), 'where telegram_id = {}'.format(message.chat.id)) print('/////////////////////////////////////////////////') if (datetime.now() - Database(table_name='user_db').select_db( 'reg_time', 'where telegram_id = {}'.format(message.chat.id)) ['result'][0]['reg_time']).total_seconds() >= 10: if (datetime.now() - Database(table_name='user_db').select_db( 'last_mes_time', 'where telegram_id = {}'.format( message.chat.id))['result'][0]['last_mes_time'] ).total_seconds() <= ddos_timer: print('------------DDoS---------------') Database(table_name='user_db').update_db( 'last_mes_time', '"{}"'.format( datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S")), 'where telegram_id = {}'.format(message.chat.id)) work = False else: print('------------no DDoS---------------') work = True else: print('------------New User---------------') work = True return work
def edit_message_reply(self, message, text, keyboard_inline, callback_id=None, callback_data=None): msg_id = Database(table_name='user_db').select_db( '*', 'where telegram_id = {}'.format(message.chat.id))['result'][0] if ((message.json['from']['is_bot'] == True) and (message.message_id == msg_id['last_mes_bot_inline_id']) and msg_id['last_mes_bot_inline_id'] > msg_id['last_mes_bot_id'] and msg_id['last_mes_bot_inline_id'] > msg_id['last_mes_user_id']): self.bot.edit_message_text(chat_id=message.chat.id, message_id=message.message_id, text=text, reply_markup=keyboard_inline) else: msg = self.bot.send_message(chat_id=message.chat.id, text=text, reply_markup=keyboard_inline) Database(table_name='user_db').update_db( 'last_mes_bot_inline_id', '"{}"'.format(msg.message_id), 'where telegram_id = {}'.format(message.chat.id))
def executor(self, message, callback_id=None, callback_data=None): user_db = Database(table_name='user_db').select_db( '*', 'where telegram_id = {}'.format(message.chat.id)) if message.text.lower() in self.commands: print( '---------------------------------1-------------------------------------' ) x = getattr(self, self.commands[message.text.lower()]) x(message, callback_id, callback_data) elif user_db['result'][0]['fsm_wait'] != 0: print( '---------------------------------2-------------------------------------' ) print( Database('fsm').select_db( '*', 'where track = {}'.format( int(user_db['result'][0]['fsm_wait'])))) x = getattr( self, Database('fsm').select_db( '*', 'where track = {}'.format( user_db['result'][0]['fsm_wait']))['result'][0] ['point_b']) x(message, callback_id, callback_data) elif callback_data != None: print( '---------------------------------3-------------------------------------' ) data = callback_data.split(', ') print(data) fsm_code = int(data[0]) fsm_wait = int(data[1]) fsm_param = str(data[2]) call_point = Database('fsm').select_db( '*', 'where track = {}'.format(fsm_code)) db_point = Database('fsm').select_db( '*', 'where track = {}'.format(user_db['result'][0]['fsm_code'])) if (call_point['available'] != 0 and db_point['available'] != 0): if (call_point['result'][0]['point_a'] == db_point['result'][0]['point_b'] or call_point['result'][0]['point_a'] == "all"): x = getattr(self, call_point['result'][0]['point_b']) x(message, callback_id, callback_data) else: print( '--------- ошибка последовательности автоматов. автомат проигнорирован ---------' ) else: print( '--------- ошибка наличия автоматов. автомат проигнорирован ---------' ) else: print( '--------- ошибка обработки запроса. автомат не выполнен ---------' )
def update_mes(self, message, update_types, update_param='None'): Database('update_mes').delete_db('where telegram_id = {}'.format( message.chat.id)) Database('update_mes').insert_db(values=[ '{}'.format(message.chat.id), '{}'.format(message.message_id), '{}'.format(update_types), '"{}"'.format(update_param), '"{}"'. format(datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S")) ])
def pass_cheсker(message, pass_timer=pass_timer): print('------------check pass---------------') print(message) if Database(table_name='user_db').select_db( 'pass', 'where telegram_id = {}'.format( message.chat.id))['result'][0]['pass'] != 'None': if (datetime.now() - Database(table_name='user_db').select_db( 'last_mes_time', 'where telegram_id = {}'.format( message.chat.id))['result'][0]['last_mes_time'] ).total_seconds() >= pass_timer: if Database(table_name='user_db').select_db( 'pass_count', 'where telegram_id = {}'.format( message.chat.id))['result'][0]['pass_count'] == 0: bot.send_message( chat_id=message.chat.id, text= 'тебя не было в системе больше 5 минут. введи пароль для дальнейших действий' ) Database(table_name='user_db').update_db( 'pass_count', '1', 'where telegram_id = {}'.format(message.chat.id)) print('------------3---------------') if message.text == Database(table_name='user_db').select_db( 'pass', 'where telegram_id = {}'.format( message.from_user.id))['result'][0]['pass']: bot.send_message(chat_id=message.chat.id, text="пароль верный. доступ открыт") Database(table_name='user_db').update_db( 'pass_count', '1', 'where telegram_id = {}'.format(message.chat.id)) Database(table_name='user_db').update_db( 'last_mes_time', '"{}"'.format( datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S")), 'where telegram_id = {}'.format(message.chat.id)) print('------------1---------------') return True else: bot.send_message(chat_id=message.chat.id, text="пароль неверный") print('------------2---------------') return False else: Database(table_name='user_db').update_db( 'last_mes_time', '"{}"'.format( datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S")), 'where telegram_id = {}'.format(message.chat.id)) return True else: Database(table_name='user_db').update_db( 'last_mes_time', '"{}"'.format( datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S")), 'where telegram_id = {}'.format(message.chat.id)) print('------------4---------------') return True
def referal_3(self, message, callback_id, callback_data): if callback_data != None: data = callback_data.split(', ') fsm_code = int(data[0]) fsm_wait = int(data[1]) fsm_param = str(data[2]) if fsm_param != "None": if Database(table_name='user_db').select_db( 'telegram_id', 'where telegram_id = {}'.format( fsm_param))['available'] != 0: if str(fsm_param) != str(message.chat.id): if Database(table_name='user_db').select_db( 'ref_acc', 'where telegram_id = {}'.format( message.chat.id) )['result'][0]['ref_acc'] == 'None': self.bot.send_message( chat_id=message.chat.id, text= 'спасибо за участие в партнёрской программе') Database(table_name='user_db').update_db( 'ref_count', 'ref_count+1', 'where telegram_id = {}'.format(fsm_param)) Database(table_name='user_db').update_db( 'ref_acc', '"{}"'.format(fsm_param), 'where telegram_id = {}'.format( message.chat.id)) self.fsm_db(message, 11, 0, 'None') self.home(message, callback_id, callback_data) else: self.bot.send_message( chat_id=message.chat.id, text= 'вы уже были приглашены другим пользователем') self.home(message, callback_id, callback_data) else: self.bot.send_message( chat_id=message.chat.id, text='нельзя стать своим собственным рефералом') self.home(message, callback_id, callback_data) else: self.bot.send_message(chat_id=message.chat.id, text='такой пользователь не найден') self.home(message, callback_id, callback_data) else: self.bot.send_message(chat_id=message.chat.id, text='ошибка ввода') self.home(message, callback_id, callback_data)
def user_checker(message): print('------------1==============') if Database(table_name='user_db').select_db( 'telegram_id', 'where telegram_id = {}'.format( message.chat.id))['available'] == 0: print('------------2==============') Fsm().register(message) keyboard_test = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True)
def fsm_db(self, message, fsm_code=None, fsm_wait=None, fsm_param=None, callback_data=None): if callback_data != None: data = callback_data.split(', ') fsm_code = int(data[0]) fsm_wait = int(data[1]) fsm_param = str(data[2]) Database(table_name='user_db').update_db( 'fsm_code', '{}'.format(fsm_code), 'where telegram_id = {}'.format(message.chat.id)) Database(table_name='user_db').update_db( 'fsm_wait', '{}'.format(fsm_wait), 'where telegram_id = {}'.format(message.chat.id)) Database(table_name='user_db').update_db( 'fsm_param', '"{}"'.format(fsm_param), 'where telegram_id = {}'.format(message.chat.id))
def edit_message_text(self, message, text, callback_id=None, callback_data=None): msg_id = Database(table_name='user_db').select_db( '*', 'where telegram_id = {}'.format(message.chat.id))['result'][0] msg = None if msg_id['last_mes_user_id'] < msg_id['last_mes_bot_id']: msg = self.bot.edit_message_text( chat_id=message.chat.id, message_id=msg_id['last_mes_bot_id'], text=text) print(msg) elif msg_id['last_mes_user_id'] > msg_id['last_mes_bot_id']: msg = self.bot.send_message(chat_id=message.chat.id, text=text) Database(table_name='user_db').update_db( 'last_mes_bot_id', '"{}"'.format(msg.message_id), 'where telegram_id = {}'.format(message.chat.id)) return msg
def send_reply(self, message, reply_markup, callback_id=None, callback_data=None): msg = self.bot.send_message(chat_id=message.chat.id, text='________________________________', reply_markup=reply_markup) Database(table_name='user_db').update_db( 'last_mes_bot_inline_id', '"{}"'.format(msg.message_id), 'where telegram_id = {}'.format(message.chat.id)) return msg
def pass_3(self, message, callback_id, callback_data): if callback_data != None: data = callback_data.split(', ') fsm_code = int(data[0]) fsm_wait = int(data[1]) fsm_param = str(data[2]) if fsm_param != "None": self.send_message(message, 'пароль установлен'.format(message.text)) Database(table_name='user_db').update_db( 'pass', '"{}"'.format( Database(table_name='user_db').select_db( '*', 'where telegram_id = {}'.format( message.chat.id))['result'][0]['fsm_param']), 'where telegram_id = {}'.format(message.chat.id)) Database(table_name='user_db').update_db( 'pass_time', '"{}"'.format( datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S")), 'where telegram_id = {}'.format(message.chat.id)) Database(table_name='user_db').update_db( 'role', '1', 'where telegram_id = {}'.format(message.chat.id)) self.fsm_db(message, 6, 0, 'None') self.home(message, callback_id, callback_data)
def register(self, message): if Database(table_name='user_db').select_db( 'telegram_id', 'where telegram_id = {}'.format( message.from_user.id))['available'] == 0: if len(message.text) > 6: ref = message.text[7:] print( Database(table_name='user_db').select_db( 'telegram_id', 'where telegram_id = {}'.format(ref), 1)) if Database(table_name='user_db').select_db( 'telegram_id', 'where telegram_id = {}'.format( ref))['available'] != 0: if Database(table_name='user_db').select_db( 'telegram_id', 'where telegram_id = {}'.format(ref), 1)['result'][0]['telegram_id'] != message.chat.id: Database(table_name='user_db').update_db( 'ref_count', 'ref_count+1', 'where telegram_id = {}'.format(ref)) else: ref = 'None' Database(table_name='user_db').insert_db(values=[ '{}'.format(message.chat.id), #telegram_id= '"{}"'.format(message.chat.username), #username '"None"', #pass= '******'.format( datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S")), #pass_time '0', #pass_count= '0', #role= '0', #dep_status= '"0"', #dep_balance= '"0"', #dept_bet= '"{}"'.format(r"https://t.me/bukmekertest_bot?start=" + str(message.chat.id)), #ref_link= '"{}"'.format(ref), #ref_acc= '0', #ref_count= '"{}"'.format( datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S")), #reg_time= '"{}"'.format( datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S")), #last_mes_time= '0', #last_mes_bot_id= '0', #last_mes_bot_inline_id= '0', #last_mes_user_id= '2', #fsm_code= '0', #fsm_wait= '"None"' #fsm_param= ]) self.register_0(message)
def referal_2(self, message, callback_id, callback_data): if callback_data == None: if message.text.find('=') != -1: ref = message.text.split('=')[1] keyboard = self.kb_inline() callback_button = self.btn_inline( text="подтвердить", callback_data="11, 0, {}".format(ref)) keyboard.add(callback_button) user_db = Database(table_name='user_db').select_db( '*', 'where telegram_id = {}'.format(message.chat.id)) if user_db['available'] != 0: self.bot.send_message( chat_id=message.chat.id, text= 'пользователь, рефералом которого вы являетесь: {} \nесли всё верно - нажмите кнопку "подтвердить"\nв случае ошибки нажмите "отмена"' .format(user_db['result'][0]['username']), reply_markup=keyboard) self.fsm_db(message, 10, 0, ref) else: self.bot.send_message(chat_id=message.chat.id, text='такой пользователь не найден') self.home(message, callback_id, callback_data)
def register_0(self, message, callback_id=None, callback_data=None): keyboard_inline = self.kb_inline() callback_button_register = self.btn_inline(text="регистрация", callback_data="3, 0, None") callback_button_demo = self.btn_inline(text="ДЕМО счёт", callback_data="1, 0, None") keyboard_inline.add(callback_button_register, callback_button_demo) keyboard_reply = self.kb_reply(resize_keyboard=True) keyboard_reply.add('домой', 'отмена') self.send_message(message, 'добро пожаловать в систему!', keyboard_reply) msg = self.bot.send_message( chat_id=message.chat.id, text= 'хотите открыть основной счёт? \nили потренероваться на ДЕМО счёте?', reply_markup=keyboard_inline) Database(table_name='user_db').update_db( 'last_mes_bot_inline_id', '"{}"'.format(msg.message_id), 'where telegram_id = {}'.format(message.chat.id)) self.fsm_db(message, 2, 0, 'None')
import telebot #весь api tlgrm bot from db_processor import Database #самописный модуль import threading #многопоточность import time #работа со временем import json from fsm import Fsm from datetime import datetime from pprint import pprint, pformat bot = telebot.TeleBot('1294566396:AAFB5aer0PWXnVhPHSr0CFX1pElg8t5UCHs') while True: start = time.time() update_mes = Database(table_name='update_mes').select_db('*') if update_mes['available'] != 0: print(len(update_mes['result'])) for i in range(len(update_mes['result'])): print(i) bot.edit_message_text( chat_id=update_mes['result'][i]['telegram_id'], message_id=update_mes['result'][i]['mes_id'], text=datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S")) time.sleep(5 - (time.time() - start))