def get_not_in_corp_users(message): # получение пользователей не сост в орг """ :param message: message :return: список пользователей не сост в орг """ global connect global cursor try: cursor.execute( "SELECT ID,NickName,Profession,UserRank FROM Users WHERE Comp=0 ORDER BY RANDOM() LIMIT 5" ) users = cursor.fetchall() msg_text = '' markup = types.InlineKeyboardMarkup() for i in range(len(users)): if users[i][0] != message.from_user.id: call = '/invite' + str(users[i][0]) msg = 'Пригласить ' + str(users[i][1]) key = types.InlineKeyboardButton(msg, callback_data=call) markup.add(key) msg_text += str(users[i][1]) + ' ' + str( users[i][2]) + ' Ранг: ' + str(users[i][3]) msg_text += '\n' return msg_text, markup except Exception as e: print(e) functions.error_log(e) return 'Нет свободных людей', None
def corp_info(user_id): # информация об орг """ :param user_id: user_id :return: информация об орг """ global connect global cursor try: corp_id = get_corp(user_id) cursor.execute( "SELECT Description FROM Companies WHERE ID={0}".format(corp_id)) desc = cursor.fetchall()[0][0] cursor.execute( "SELECT Name FROM Companies WHERE ID={0}".format(corp_id)) company = cursor.fetchall()[0][0] owner = get_owner_nickname(corp_id) msg = '<b>Название:</b> <i>{0}</i>\n<b>Владелец:</b> <i>{1}</i>\n<b>Описание:</b> <i>{2}</i>'.format( company, owner, desc) return msg except IndexError: msg = 'Вы не состоите в организации' return msg except Exception as e: msg = 'Что-то пошло не по плану' functions.error_log(e) return msg
def give_new_prof(user_id): # выдача новой профессии """ :param user_id: user_id :return: выдача списка новых профессий """ global connect global cursor try: user_markup = telebot.types.ReplyKeyboardMarkup(True, False) cursor.execute("SELECT Spec FROM Users WHERE ID=" + str(user_id)) prof_id = cursor.fetchall() prof_id = prof_id[0][0] if prof_id == 'low': prof_id = 3 elif prof_id == 'gym': prof_id = 0 else: prof_id = 1 cursor.execute( "SELECT Prof FROM Profs WHERE ProfRank<={0} AND ProfCheck={1}". format(str(get_user_rank(user_id)), prof_id)) profs = cursor.fetchall() for i in range(len(profs)): print(i) user_markup.row(profs[i][0]) args.bot.send_message( parse_mode='HTML', chat_id=user_id, text='<i>У вас появилась возможность выбрать новую профессию</i>', reply_markup=user_markup) args.new_prof_list.append(user_id) except Exception as e: functions.error_log(e)
def get_top(top): # генерация списка топов """ :param top: orgs/rich :return: список топов """ global connect global cursor try: if top == 'rich': cursor.execute( "SELECT NickName FROM Users ORDER BY Money DESC LIMIT 10") users = cursor.fetchall() cursor.execute("SELECT ID FROM Users ORDER BY Money DESC LIMIT 10") users_id = cursor.fetchall() res = '<b>Топ-10 богачей:</b>' for i in range(len(users)): res += '\n{}) {}: {}'.format(i + 1, users[i][0], get_balance(int(users_id[i][0]))) cursor.close() connect.close() return res elif top == 'orgs': cursor.execute( "SELECT Name FROM Companies ORDER BY CountWorks DESC LIMIT 10") orgs = cursor.fetchall() res = '<b>Топ-10 организаций:</b>' for i in range(len(orgs)): res += '\n{}) {}:'.format(i + 1, orgs[i][0]) return res except Exception as e: functions.error_log(e)
def get_workers(user_id): # получение работников для выдачи задания """ :param user_id: user_id :return: список работников для выдачи задания """ global connect global cursor try: cursor.execute( "SELECT ID,NickName,Profession,UserRank FROM Users WHERE Status='{0}' ORDER BY RANDOM() LIMIT 5" .format(str(args.waitStatus))) users = cursor.fetchall() msg_text = '' markup = types.InlineKeyboardMarkup() for i in range(len(users)): if users[i][0] != user_id and int(users[i][0]) != 0: call = '/task' + str(users[i][0]) msg = 'Дать задание ' + str(users[i][1]) key = types.InlineKeyboardButton(msg, callback_data=call) markup.add(key) msg_text += str(users[i][1]) + ' ' + str( users[i][2]) + ' Ранг: ' + str(users[i][3]) msg_text += '\n' return msg_text, markup except Exception as e: functions.error_log(e) return 'Некому дать задание', None
def set_profession(message, in_prof_arr): # установка профессии пользователя """ :param message: message :param in_prof_arr: dataBase.set_profession :return: установка профессии """ global connect global cursor try: if message.text in args.techList: cursor.execute("SELECT Spec FROM Users WHERE ID=" + str(message.from_user.id)) spec = cursor.fetchall() if spec[0][0] == 'tech': cursor.execute( "UPDATE Users SET Profession='{0}' WHERE ID='{1}'".format( str(message.text), str(message.from_user.id))) else: cursor.close() connect.close() return False elif message.text in args.gumList: cursor.execute("SELECT Spec FROM Users WHERE ID=" + str(message.from_user.id)) spec = cursor.fetchall() if spec[0][0] == 'gum': cursor.execute( "UPDATE Users SET Profession='{0}' WHERE ID='{1}'".format( str(message.text), str(message.from_user.id))) else: cursor.close() connect.close() return False elif in_prof_arr: cursor.execute( "UPDATE Users SET Profession='{0}' WHERE ID='{1}'".format( str(message.text), str(message.from_user.id))) else: cursor.execute("SELECT Spec FROM Users WHERE ID=" + str(message.from_user.id)) spec = cursor.fetchall() if spec[0][0] == 'low': cursor.execute( "UPDATE Users SET Profession='{0}' WHERE ID='{1}'".format( str(message.text), str(message.from_user.id))) else: cursor.close() connect.close() return False connect.commit() return True except Exception as e: functions.error_log(e)
def add_quest(arguments): # функция добавления квеста """ :param arguments: аргументы, требуемые для добавления квеста :return: добавление квеста """ global connect global cursor try: cursor.execute("INSERT INTO Quests VALUES(?, ?, ?, ?)", arguments) connect.commit() except Exception as e: functions.error_log(e)
def refresh_corp_tasks(user_id): # обновление заданий орг """ :param user_id: user_id :return: обновление заданий орг """ global connect global cursor try: cursor.execute( "DELETE FROM CorpTasks WHERE ownerID={0}".format(user_id)) connect.commit() except Exception as e: functions.error_log(e)
def get_spec(user_id): # получение специализации пользователя """ :param user_id: user_id :return: специальность пользователя """ global connect global cursor try: cursor.execute("SELECT Spec FROM Users WHERE ID=" + str(user_id)) spec = cursor.fetchall() return spec[0][0] except Exception as e: functions.error_log(e)
def set_nickname(nickname): # установка ника пользователя """ :param nickname: message :return: установка никнейма """ global connect global cursor try: cursor.execute("UPDATE Users SET NickName='{0}' WHERE ID={1}".format( str(nickname.text), nickname.from_user.id)) connect.commit() except Exception as e: functions.error_log(e)
def get_nickname(user_id): # получение ника пользователя """ :param user_id: user_id :return: ник пользователя """ global connect global cursor try: cursor.execute("SELECT NickName FROM Users WHERE ID=" + str(user_id)) name = cursor.fetchall() return name[0][0] except Exception as e: functions.error_log(e)
def set_owner(user_id, owner): # установка владельца орг """ :param user_id: user_id :param owner: 1/0 :return: установка владельца орг """ global connect global cursor try: cursor.execute("UPDATE Users SET isOwner={0} WHERE ID={1}".format( owner, user_id)) connect.commit() except Exception as e: functions.error_log(e)
def upd_spec(user_id, spec): # обновление специализации пользователя """ :param user_id: user_id :param spec: user's spec :return: обновление специализации пользователя """ global connect global cursor try: cursor.execute("UPDATE Users SET Spec='{0}' WHERE ID={1}".format( spec, str(user_id))) connect.commit() except Exception as e: functions.error_log(e)
def upd_corp(user_id, company): # обновление организации пользователя """ :param user_id: user_id :param company: get_corp() :return: обновление организации пользователя """ global connect global cursor try: cursor.execute("UPDATE Users SET Comp={0} WHERE ID={1}".format( company, user_id)) connect.commit() except Exception as e: functions.error_log(e)
def upd_is_corp_task(user_id, is_corp): # обновление corptask """ :param user_id: user_id :param is_corp: is_corp_task :return: обновление corptask """ global connect global cursor try: cursor.execute("UPDATE Users SET corptask={0} WHERE ID={1}".format( is_corp, user_id)) connect.commit() except Exception as e: functions.error_log(e)
def get_corp(user_id): # получение ID орг """ :param user_id: user_id :return: ID орг """ global connect global cursor try: cursor.execute("SELECT Comp FROM Users WHERE ID=" + str(user_id)) corp_id = cursor.fetchall()[0][0] return corp_id except Exception as e: functions.error_log(e) return True
def get_balance(user_id): # получение баланса """ :param user_id: user_id :return: баланс пользователя """ global connect global cursor try: cursor.execute("SELECT Money FROM Users WHERE ID=" + str(user_id)) money = str(cursor.fetchall()[0][0]) money += str(args.currency) return money except Exception as e: functions.error_log(e)
def upd_task_now(user_id, task): # обновление текущего задания """ :param user_id: user_id :param task: task :return: обновление текущего задания """ global connect global cursor try: cursor.execute("UPDATE Users SET TaskNow='{0}' WHERE ID={1}".format( str(task), str(user_id))) connect.commit() except Exception as e: functions.error_log(e)
def get_all_users(): """ :return: все id из users """ global connect global cursor try: tmp = [] cursor.execute("SELECT ID FROM Users") res = cursor.fetchall() for i in range(len(res)): tmp.append(int(res[i][0])) return tmp except Exception as e: functions.error_log(e)
def set_last_worker(user_id, worker_id): """ :param user_id: user_id :param worker_id: worker_id :return: установить id пользователя, которому было выдано последнее задание """ global connect global cursor try: cursor.execute( "UPDATE HiddenInfo SET lastWorker={0} WHERE ID={1}".format( worker_id, user_id)) connect.commit() except Exception as e: functions.error_log(e)
def minus_money(user_id, money): # вычитание денег """ :param user_id: user_id :param money: money count :return: вычитание денег """ global connect global cursor try: cursor.execute( "UPDATE Users SET Money=Money-{0} WHERE ID='{1}'".format( money, user_id)) connect.commit() except Exception as e: functions.error_log(e)
def plus_count_works(user_id): # указание количества выполненных работ """ :param user_id: user_id :return: добавление +1 к выполненным работам """ global connect global cursor try: cursor.execute( "UPDATE Users SET Count_Works=Count_Works+1 WHERE ID='{0}'".format( str(user_id))) connect.commit() up_lvl(user_id) # повышение ранга except Exception as e: functions.error_log(e)
def is_owner(user_id): # проверка является ли пользователь главой орг """ :param user_id: user_id :return: является ли пользователь главой орг """ global connect global cursor try: cursor.execute("SELECT Comp FROM Users WHERE isOwner=1 AND ID=" + str(user_id)) res = cursor.fetchall()[0][0] return True except Exception as e: functions.error_log(e) return False
def get_avatar_params(user_id): """ :param user_id: user_id :return: получение параметров аватара для его генерации и отправки пользователю """ global connect global cursor try: cursor.execute( "SELECT Head, Body, Face FROM Avatars WHERE ID={0}".format( user_id)) res = cursor.fetchall()[0] return res except Exception as e: functions.error_log(e)
def get_last_worker(user_id): """ :param user_id: user_id :return: id пользователя, которому было выдано последнее задание """ global connect global cursor try: cursor.execute( "SELECT lastWorker FROM HiddenInfo WHERE ID={0}".format(user_id)) worker = cursor.fetchall()[0][0] return int(worker) except Exception as e: functions.error_log(e) return 0
def upd_corp_count_works( corp_id): # увеличение количества выполненных работ орг """ :param corp_id: user_id :return: увеличение количества выполненных работ орг """ global connect global cursor try: cursor.execute( "UPDATE Companies SET CountWorks=CountWorks+1 WHERE ID={0}".format( corp_id)) connect.commit() except Exception as e: functions.error_log(e)
def get_members_id(corp_id): # получение ID членов орг """ :param corp_id: get_corp() :return: ID членов орг """ global connect global cursor try: cursor.execute("SELECT ID FROM Users WHERE Comp={0}".format(corp_id)) users = cursor.fetchall() res = [] for i in range(len(users)): res.append(int(users[i][0])) return res except Exception as e: functions.error_log(e)
def get_corp_name(comp_id): # получение названия орг """ :param comp_id: get_comp() :return: название орг """ global connect global cursor try: if comp_id == 0: return '0' cursor.execute("SELECT Name FROM Companies WHERE ID=" + str(comp_id)) corp_name = cursor.fetchall()[0][0] return corp_name except Exception as e: functions.error_log(e) return True
def get_avatar(ids): # полученя аватара (мб не работает) """ :param ids: user_id :return: аватар (мб не работает) """ global connect global cursor try: cursor.execute("SELECT photo FROM userPhotos WHERE ID=" + str(ids)) photo = cursor.fetchall()[0][0] photo = photo.encode()[2:-1] print(photo) print(type(photo)) return photo except Exception as e: functions.error_log(e)
def is_free(user_id): # проверить выполняет ли пользователь какую-либо работу """ :param user_id: user_id :return: выполняет ли пользователь какую-либо работу сейчас """ global connect global cursor try: cursor.execute("SELECT Status FROM Users WHERE ID=" + str(user_id)) status = cursor.fetchall() if status[0][0] == args.waitStatus: return True else: return False except Exception as e: functions.error_log(e)