Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.24 KB | None | 0 0
  1. //main.py
  2. import telebot
  3. import shelve
  4. import sqlite3
  5. from database import DB
  6. import views
  7. import config
  8. import database
  9. API_TOKEN = '716765013:AAHoYpEMIzxkkwzog66MRbcc8FPUqH4al3o'
  10. bot = telebot.TeleBot(API_TOKEN)
  11. admins = ['123']
  12.  
  13.  
  14.  
  15. @bot.message_handler(commands=['start'])
  16. def send_start(message):
  17.     username = '@'+message.from_user.username
  18.     print(username)
  19.     if views.get_user(username):
  20.         fname = views.get_user(username)[0][2]
  21.         line = 'Добро пожаловать, ' + fname
  22.         markup = telebot.types.ReplyKeyboardMarkup()
  23.         markup.add('Продолжить')
  24.         msg = bot.reply_to(message, line, reply_markup=markup)
  25.         bot.register_next_step_handler(msg, start_entry_level_0)
  26.     else:
  27.         bot.reply_to(message, 'Извините, вы не зарегестрированы в базе данных')
  28.  
  29.  
  30. def start_entry_level_0(message):
  31.     rk = telebot.types.ReplyKeyboardRemove()
  32.     bot.reply_to(message, 'Вы являетесь администратором.', reply_markup=rk)
  33.     keybord = telebot.types.InlineKeyboardMarkup()
  34.     callback_button_add = telebot.types.InlineKeyboardButton(text="Добавить пользователя в базу данных", callback_data="callback_add_user")
  35.     callback_button_get = telebot.types.InlineKeyboardButton(text="Получить список всех пользователей", callback_data="callback_get_user")
  36.     callback_button_del = telebot.types.InlineKeyboardButton(text="Удалить пользователя", callback_data="callback_del_user")
  37.     database.state_set(message.chat.id, config.AdminStates.state_no_action)
  38.     keybord.add(callback_button_add)
  39.     keybord.add(callback_button_get)
  40.     keybord.add(callback_button_del)
  41.     bot.reply_to(message, 'Список действий', reply_markup=keybord)
  42.  
  43. def add_user_template(message, user_role):
  44.     data = message.text.split('\n')
  45.     try:
  46.         views.add_user_admin(role=user_role, username=data[0], fname=data[1], sname=data[2], group=data[3])
  47.     except sqlite3.IntegrityError:
  48.         bot.reply_to(message,
  49.                      text='Такое имя пользователя уже есть в системе')
  50.         return
  51.     finally:
  52.         bot.reply_to(message, text='Пользователь {} был добавлен как {}'.format(data[0], user_role))
  53.         database.state_set(message.chat.id, config.AdminStates.state_no_action.value)
  54.         start_entry_level_0(message)
  55.  
  56. @bot.message_handler(func=lambda message: database.state_get(message.chat.id) == config.AdminStates.state_add_admin.value)
  57. def add_user_admin(message):
  58.     add_user_template(message, 'Admin')
  59.  
  60.  
  61. @bot.message_handler(func=lambda message: database.state_get(message.chat.id) == config.AdminStates.state_add_student.value)
  62. def add_user_stundent(message):
  63.     add_user_template(message, 'Student')
  64.  
  65.  
  66. @bot.message_handler(func=lambda message: database.state_get(message.chat.id) == config.AdminStates.state_add_teacher.value)
  67. def add_user_teacher(message):
  68.     add_user_template(message, 'Teacher')
  69.  
  70.  
  71. @bot.message_handler(func=lambda message: database.state_get(
  72.                message.chat.id) == config.AdminStates.state_del_user.value)
  73. def del_user(message):
  74.    kboard = telebot.types.ReplyKeyboardRemove()
  75.    data = message.text.split(' ')[0]
  76.    views.delete_user_admin(username=data)
  77.    bot.reply_to(message, text='Пользователь {} был удален'.format(data), reply_markup=kboard)
  78.    start_entry_level_0(message)
  79.  
  80.  
  81. @bot.message_handler(func=lambda message: database.state_get(message.chat.id) == config.AdminStates.state_add_user.value)
  82. def add_user(message):
  83.     markup = telebot.types.ReplyKeyboardRemove()
  84.     if message.text == 'Администратор':
  85.         database.state_set(message.chat.id, config.AdminStates.state_add_admin.value)
  86.         print(database.state_get(message.chat.id))
  87.     elif message.text == 'Преподователь':
  88.         database.state_set(message.chat.id, config.AdminStates.state_add_teacher.value)
  89.         print(database.state_get(message.chat.id))
  90.     elif message.text == 'Студент':
  91.         database.state_set(message.chat.id, config.AdminStates.state_add_student.value)
  92.  
  93.     else:
  94.         bot.reply_to(message, 'Некорректный ввод')
  95.         start_entry_level_0(message)
  96.     bot.reply_to(message, 'Введите данные следующим образом:\n'
  97.                           '*@имя_пользователя*\n'
  98.                           '*Имя*\n'
  99.                           '*Фамилия*\n'
  100.                           '*Группа обучения*\n', reply_markup=markup)
  101.     print(database.state_get(message.chat.id))
  102.  
  103.  
  104.  
  105. def add_new_user_view(message):
  106.     print(message.text)
  107.  
  108. @bot.callback_query_handler(func=lambda call: True)
  109. def callback_inline(call):
  110.     if call.message:
  111.         if call.data == "callback_get_user":
  112.             database.state_set(call.message.chat.id, config.AdminStates.state_get_user.value)
  113.  
  114.             bot.send_message(chat_id=call.message.chat.id, text='Список всех пользователей')
  115.             for el in range(len(views.select_all_users_admin())):
  116.                 bot.send_message(chat_id=call.message.chat.id, text=views.select_all_users_admin()[el][0]+ ': '+ views.select_all_users_admin()[el][1] + ' ' +
  117.                                                                     views.select_all_users_admin()[el][2] +' ' +
  118.                                                                     views.select_all_users_admin()[el][3] + '\n',)
  119.             start_entry_level_0(call.message)
  120.             print(database.state_get(call.message.chat.id))
  121.     if call.message:
  122.         if call.data == "callback_add_user":
  123.             database.state_set(call.message.chat.id, config.AdminStates.state_add_user.value)
  124.             markup = telebot.types.ReplyKeyboardMarkup()
  125.             markup.add('Администратор')
  126.             markup.add('Преподователь')
  127.             markup.add('Студент')
  128.             bot.send_message(chat_id=call.message.chat.id, text='Кого вы хотите добавить?', reply_markup=markup)
  129.  
  130.  
  131.             ######ДОБАВИТЬ ПРОВЕРКУ#####
  132.     if call.message:
  133.         if call.data == "callback_del_user":
  134.            database.state_set(call.message.chat.id, config.AdminStates.state_del_user.value)
  135.            kboard = telebot.types.ReplyKeyboardMarkup()
  136.            for el in range(len(views.select_all_users_admin())):
  137.                kboard.add(views.select_all_users_admin()[el][1] + ' ' +
  138.                                                                    views.select_all_users_admin()[el][2] + ' ' +
  139.                                                                    views.select_all_users_admin()[el][3])
  140.            bot.send_message(chat_id=call.message.chat.id,
  141.                             text='Выберите пользователя, которого вы хотите удалить', reply_markup=kboard)
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151. if __name__ == '__main__':
  152.     print('ok')
  153.     bot.polling()
  154.  
  155.  
  156. //views.py
  157. from database import DB
  158.  
  159. db = DB('user_db.db')
  160. ######ADMIN######
  161. def select_all_users_admin():
  162.     return db.select_all()
  163.  
  164. def add_user_admin(role, username, fname, sname, group):
  165.     db.add_user(role, username, fname, sname, group)
  166.     db.save()
  167.  
  168.  
  169.  
  170. def get_user(username):
  171.     return db.select_single(username)
  172.  
  173. def delete_user_admin(username):
  174.     db.delete_user(username)
  175.     db.save()
  176.  
  177.  
  178. //database.py
  179. from database import DB
  180.  
  181. db = DB('user_db.db')
  182. ######ADMIN######
  183. def select_all_users_admin():
  184.     return db.select_all()
  185.  
  186. def add_user_admin(role, username, fname, sname, group):
  187.     db.add_user(role, username, fname, sname, group)
  188.     db.save()
  189.  
  190.  
  191.  
  192. def get_user(username):
  193.     return db.select_single(username)
  194.  
  195. def delete_user_admin(username):
  196.     db.delete_user(username)
  197.     db.save()
  198.  
  199.  
  200. //config.py
  201. from enum import Enum
  202.  
  203.  
  204. class AdminStates(Enum):
  205.     state_no_action = 'NONE'
  206.     state_add_user = 'ADD'
  207.     state_chose_user_role = 'CHOISE'
  208.     state_add_admin = 'ADD_ADMIN'
  209.     state_add_teacher = 'ADD_TEACHER'
  210.     state_add_student = 'ADD_STUDENT'
  211.     state_get_user = 'GET'
  212.     state_del_user = 'DEL'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement