def helper(message): """Предоставляет человеку список команд""" LOG.log(str(message.from_user.id) + ": helper invoked") database = Database() answer = '<b>Команды:</b>\n\n' if message.chat.id < 0: # Command is used in chat system = database.get('chats', ('id', message.chat.id))['system'] answer += '<b>Общие команды:</b>\n' \ '/me - Присылает вашу запись в базе данных\n' \ '/anon - Прислать анонимное послание в админский чат (если таковой имеется)\n' \ '/members - Прислать в личку перечень участников (нынешних и бывших) и их ID\n' \ '/messages_top - Прислать в личку топ участников по сообщениям\n' \ '/warns - Посмотреть, у кого сколько предупреждений\n\n' # Helps answer += '<b>Помощь и менюшки:</b>\n' answer += '/help - Прислать это сообщение\n'\ '/money_help - Финансовый режим\n'\ '/chat - Показать настройки в чате\n' if len(database.get_many( 'chats', ("system", system))) > 1: # More than 1 chat in system answer += '/system - Показать настройки во всей системе (по умолчанию)\n' answer += '\n<b>Хранилище:</b>\n'\ '/storages - Посмотреть список хранилищ\n'\ '/get [хранилище] [номер] - Получать контент из хранилища,' \ 'если номер не указан, будет прислан случайный контент из хранилища\n'\ '/size [хранилище] - Получить инфо о количестве контента и модеров хранилища\n\n' if feature_is_available(message.chat.id, system, 'standard_commands'): answer += '<b>Развлекательные команды:</b>\n' answer += '/minet - Делает приятно\n' answer += '/meme - Присылает мем\n' answer += '/shuffle [x] [элементы через пробел] - перемешать элементы. ' \ 'Число x необязательно, но если указано, ' \ 'то бот оставит только x первых элементов\n\n' if is_suitable(message, message.from_user, 'boss', loud=False): answer += '<b>Базовые админские команды:</b>\n' answer += '/update - Пересчитывает сообщения, ' \ 'никнеймы и юзернеймы всех участников чата\n' answer += '/messages [число сообщений] - ' \ 'Изменить количество сообщений от участника в этом чате\n' answer += '/warn [число варнов]- Дать варн(ы) (3 варна = бан)\n' answer += '/unwarn [число варнов]- Снять варн(ы)\n' answer += '/mute [количество часов] - Запретить писать в чат\n' answer += '/ban - Дать бан\n' answer += '/kick - Кикнуть (то есть чел сразу сможет вернуться)\n' answer += '/guest - Снять ограничения, забрать админку\n\n' if is_suitable(message, message.from_user, 'uber', loud=False): answer += '<b>Продвинутые админские команды:</b>\n' answer += '/admin - Снять ограничения, дать админку\n' answer += '/senior_admin - Снять бан, дать продвинутую админку\n\n' if is_suitable(message, message.from_user, 'chat_changer', loud=False): answer += '<b>Настройщики чатов:</b>\n' answer += '/add_chat [ID системы чатов] - Добавить чат в систему чатов\n' \ '/set_limit [x] - Поставить кулдаун на вход. Когда кто-то заходит, ' \ 'следующие x секунд никто не сможет зайти\n' answer += '/admin_place - Отметить чат как админский\n' answer += '/standard_greetings [текст] — Изменить приветствие для простого человека\n' \ '/captcha_greetings [текст] — Изменить приветствие при капче\n' \ '/admin_greetings [текст] — Изменить приветствие для админа\n' \ '/full_greetings [текст] — Изменить приветствие для полного админа\n' \ "<i>Вставьте в текст '{name}' без кавычек там, " \ "где нужно обратиться к участнику по нику</i>\n\n" answer += "<b>Примечание:</b> " \ "командами типа /me можно отвечать на сообщения других людей, " \ "тогда команда выполнится на выбранном человеке. " \ "Ещё вы можете после команды написать ID человека (можно достать " \ "в /members), чтобы не отвлекать его от дел :3\n\n" answer += f'<b><i>ID вашей системы: {system} </i></b>' else: # Command is used in PM answer += '/help - Прислать это сообщение\n' answer += '/minet - Делает приятно\n' answer += '/drakken - Присылает арт с Доктором Драккеном\n' answer += '/meme - Присылает мем\n' answer += '/art - Присылает картину\n' answer += '/storages - Посмотреть список хранилищ\n' answer += '/get [хранилище] - Получать случайный контент из хранилища\n' answer += '/size [хранилище] - Получить инфо о количестве контента и модеров хранилища\n' answer += '/shuffle [x] [элементы через пробел] - перемешать элементы. ' \ 'Число x необязательно, но если указано, ' \ 'то бот оставит только x первых элементов\n\n' answer += 'В чате мой функционал значительно шире' reply(message, answer, parse_mode='HTML')
def month_set(message, month): """Set the month of person's birthday""" database = Database() reply(message, "Ставлю человеку с ID {} месяц рождения {}".format(message.from_user.id, month)) database.change(month, 'month_birthday', 'members', ('id', message.from_user.id))
def chat_check(message): """Show which options are chosen in chat""" database = Database() database.change(message.chat.title, 'name', 'chats', ('id', message.chat.id)) if message.chat.username: database.change('public', 'type', 'chats', ('id', message.chat.id)) database.change(message.chat.username, 'link', 'chats', ('id', message.chat.id)) else: database.change('private', 'type', 'chats', ('id', message.chat.id)) database.change('None', 'link', 'chats', ('id', message.chat.id)) # Здесь конец chat = database.get('chats', ('id', message.chat.id)) system = database.get('systems', ('id', chat['system'])) text = 'Настройки этого чата:\n\n' for feature in FEATURES: mark = '' microtext = '' system_property = system[feature] chat_property = chat[feature] if system_property: # Feature is suggested if chat_property == 2: # Feature is set default mark += '⚙' microtext += ' (по умолчанию)' chat_property = system_property - 1 if chat_property: mark = '✅' + mark microtext = 'Работает' + microtext else: mark = '❌' + mark microtext = 'Не работает' + microtext text += f"{FEATURES_TEXTS['Russian'][FEATURES.index(feature)]}: \n{mark} {microtext}\n" if '⚙' in mark or '❌' in mark: text += f"/{feature}_on Включить на постоянку\n" if '⚙' in mark or '✅' in mark: text += f"/{feature}_off Выключить на постоянку\n" if '⚙' not in mark: text += f"/{feature}_default Поставить значение по умолчанию\n" text += '\n' reply(message, text)
def money_pay(message, person, parameters_dictionary): """Платит человеку деньги из бюджета чата""" LOG.log(f"money pay invoked to person {person.id}") database = Database() chat = database.get('chats', ('id', message.chat.id)) system = chat['system'] bot_money = database.get('systems', ('id', system))['money'] if bot_money != 'inf': bot_money = int(bot_money) p_id = person.id money = parameters_dictionary['value'] money_name_word = get_word_object( get_system_configs(system)['money_name'], 'Russian') money_name = money_name_word.cased_by_number(abs(money), if_one_then_accusative=True) person_money = get_person(message, person, system, database)['money'] if money == 0: reply(message, "Я вам запрещаю делать подобные бессмысленные запросы") elif money < 0: money = -int(money) # Делаем из отрицательного числа положительное if person_money - money >= 0: person_money -= money if bot_money != 'inf': bot_money += money sent = send( p_id, "#Финансы\n\n" f"С вашего счёта было снято {money} {money_name} в банк. " f"Теперь у вас {person_money}") sent = cf.value_marker(sent, "🔔 уведомлён(а)", "🔕 не уведомлён(а)") reply(message, 'У {} забрали {} {} в банк!'.format(person_link(person), money, money_name), parse_mode='HTML') answer = "#Финансы " + f"#f{p_id}\n\n" if bot_money != 'inf': answer += f"#Бюджет [{bot_money - money} --> {bot_money}]\n" answer += f"{person_link(person)} [{person_money + money} --> {person_money}] {sent}" send(admin_place(message, database), answer, parse_mode='HTML') else: reply( message, "У людей число {} должно быть больше нуля".format( money_name_word.genitive_plural())) else: if bot_money != 'inf' and bot_money < money: reply( message, "У нас нет столько {} в банке".format( money_name_word.genitive_plural())) else: person_money += money sent = send( p_id, "#Финансы\n\n" f"На ваш счёт было переведено {money} {money_name} из банка. " f"Теперь у вас {person_money}") sent = cf.value_marker(sent, "🔔 уведомлён(а)", "🔕 не уведомлён(а)") reply(message, '{} получил(а) из банка {} {}!'.format( person_link(person), money, money_name), parse_mode='HTML') answer = "#Финансы " + f"#f{p_id}\n\n" if bot_money != 'inf': bot_money -= money answer += f"#Бюджет [{bot_money + money} --> {bot_money}]\n" answer += f"{person_link(person)} [{person_money - money} --> {person_money}] {sent}" send(admin_place(message, database), answer, parse_mode='HTML') database.change(person_money, 'money', 'members', ('id', p_id), ('system', system)) if bot_money != 'inf': database.change(bot_money, 'money', 'systems', ('id', system))