Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //main.py
- import telebot
- import shelve
- import sqlite3
- from database import DB
- import views
- import config
- import database
- API_TOKEN = '716765013:AAHoYpEMIzxkkwzog66MRbcc8FPUqH4al3o'
- bot = telebot.TeleBot(API_TOKEN)
- admins = ['123']
- @bot.message_handler(commands=['start'])
- def send_start(message):
- username = '@'+message.from_user.username
- print(username)
- if views.get_user(username):
- fname = views.get_user(username)[0][2]
- line = 'Добро пожаловать, ' + fname
- markup = telebot.types.ReplyKeyboardMarkup()
- markup.add('Продолжить')
- msg = bot.reply_to(message, line, reply_markup=markup)
- bot.register_next_step_handler(msg, start_entry_level_0)
- else:
- bot.reply_to(message, 'Извините, вы не зарегестрированы в базе данных')
- def start_entry_level_0(message):
- rk = telebot.types.ReplyKeyboardRemove()
- bot.reply_to(message, 'Вы являетесь администратором.', reply_markup=rk)
- keybord = telebot.types.InlineKeyboardMarkup()
- callback_button_add = telebot.types.InlineKeyboardButton(text="Добавить пользователя в базу данных", callback_data="callback_add_user")
- callback_button_get = telebot.types.InlineKeyboardButton(text="Получить список всех пользователей", callback_data="callback_get_user")
- callback_button_del = telebot.types.InlineKeyboardButton(text="Удалить пользователя", callback_data="callback_del_user")
- database.state_set(message.chat.id, config.AdminStates.state_no_action)
- keybord.add(callback_button_add)
- keybord.add(callback_button_get)
- keybord.add(callback_button_del)
- bot.reply_to(message, 'Список действий', reply_markup=keybord)
- def add_user_template(message, user_role):
- data = message.text.split('\n')
- try:
- views.add_user_admin(role=user_role, username=data[0], fname=data[1], sname=data[2], group=data[3])
- except sqlite3.IntegrityError:
- bot.reply_to(message,
- text='Такое имя пользователя уже есть в системе')
- return
- finally:
- bot.reply_to(message, text='Пользователь {} был добавлен как {}'.format(data[0], user_role))
- database.state_set(message.chat.id, config.AdminStates.state_no_action.value)
- start_entry_level_0(message)
- @bot.message_handler(func=lambda message: database.state_get(message.chat.id) == config.AdminStates.state_add_admin.value)
- def add_user_admin(message):
- add_user_template(message, 'Admin')
- @bot.message_handler(func=lambda message: database.state_get(message.chat.id) == config.AdminStates.state_add_student.value)
- def add_user_stundent(message):
- add_user_template(message, 'Student')
- @bot.message_handler(func=lambda message: database.state_get(message.chat.id) == config.AdminStates.state_add_teacher.value)
- def add_user_teacher(message):
- add_user_template(message, 'Teacher')
- @bot.message_handler(func=lambda message: database.state_get(
- message.chat.id) == config.AdminStates.state_del_user.value)
- def del_user(message):
- kboard = telebot.types.ReplyKeyboardRemove()
- data = message.text.split(' ')[0]
- views.delete_user_admin(username=data)
- bot.reply_to(message, text='Пользователь {} был удален'.format(data), reply_markup=kboard)
- start_entry_level_0(message)
- @bot.message_handler(func=lambda message: database.state_get(message.chat.id) == config.AdminStates.state_add_user.value)
- def add_user(message):
- markup = telebot.types.ReplyKeyboardRemove()
- if message.text == 'Администратор':
- database.state_set(message.chat.id, config.AdminStates.state_add_admin.value)
- print(database.state_get(message.chat.id))
- elif message.text == 'Преподователь':
- database.state_set(message.chat.id, config.AdminStates.state_add_teacher.value)
- print(database.state_get(message.chat.id))
- elif message.text == 'Студент':
- database.state_set(message.chat.id, config.AdminStates.state_add_student.value)
- else:
- bot.reply_to(message, 'Некорректный ввод')
- start_entry_level_0(message)
- bot.reply_to(message, 'Введите данные следующим образом:\n'
- '*@имя_пользователя*\n'
- '*Имя*\n'
- '*Фамилия*\n'
- '*Группа обучения*\n', reply_markup=markup)
- print(database.state_get(message.chat.id))
- def add_new_user_view(message):
- print(message.text)
- @bot.callback_query_handler(func=lambda call: True)
- def callback_inline(call):
- if call.message:
- if call.data == "callback_get_user":
- database.state_set(call.message.chat.id, config.AdminStates.state_get_user.value)
- bot.send_message(chat_id=call.message.chat.id, text='Список всех пользователей')
- for el in range(len(views.select_all_users_admin())):
- bot.send_message(chat_id=call.message.chat.id, text=views.select_all_users_admin()[el][0]+ ': '+ views.select_all_users_admin()[el][1] + ' ' +
- views.select_all_users_admin()[el][2] +' ' +
- views.select_all_users_admin()[el][3] + '\n',)
- start_entry_level_0(call.message)
- print(database.state_get(call.message.chat.id))
- if call.message:
- if call.data == "callback_add_user":
- database.state_set(call.message.chat.id, config.AdminStates.state_add_user.value)
- markup = telebot.types.ReplyKeyboardMarkup()
- markup.add('Администратор')
- markup.add('Преподователь')
- markup.add('Студент')
- bot.send_message(chat_id=call.message.chat.id, text='Кого вы хотите добавить?', reply_markup=markup)
- ######ДОБАВИТЬ ПРОВЕРКУ#####
- if call.message:
- if call.data == "callback_del_user":
- database.state_set(call.message.chat.id, config.AdminStates.state_del_user.value)
- kboard = telebot.types.ReplyKeyboardMarkup()
- for el in range(len(views.select_all_users_admin())):
- kboard.add(views.select_all_users_admin()[el][1] + ' ' +
- views.select_all_users_admin()[el][2] + ' ' +
- views.select_all_users_admin()[el][3])
- bot.send_message(chat_id=call.message.chat.id,
- text='Выберите пользователя, которого вы хотите удалить', reply_markup=kboard)
- if __name__ == '__main__':
- print('ok')
- bot.polling()
- //views.py
- from database import DB
- db = DB('user_db.db')
- ######ADMIN######
- def select_all_users_admin():
- return db.select_all()
- def add_user_admin(role, username, fname, sname, group):
- db.add_user(role, username, fname, sname, group)
- db.save()
- def get_user(username):
- return db.select_single(username)
- def delete_user_admin(username):
- db.delete_user(username)
- db.save()
- //database.py
- from database import DB
- db = DB('user_db.db')
- ######ADMIN######
- def select_all_users_admin():
- return db.select_all()
- def add_user_admin(role, username, fname, sname, group):
- db.add_user(role, username, fname, sname, group)
- db.save()
- def get_user(username):
- return db.select_single(username)
- def delete_user_admin(username):
- db.delete_user(username)
- db.save()
- //config.py
- from enum import Enum
- class AdminStates(Enum):
- state_no_action = 'NONE'
- state_add_user = 'ADD'
- state_chose_user_role = 'CHOISE'
- state_add_admin = 'ADD_ADMIN'
- state_add_teacher = 'ADD_TEACHER'
- state_add_student = 'ADD_STUDENT'
- state_get_user = 'GET'
- state_del_user = 'DEL'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement