|
@@ -1,165 +1,38 @@
|
|
|
#Библиотеки
|
|
|
-from multiprocessing import connection
|
|
|
import xmpp
|
|
|
-import pymysql
|
|
|
-from config import host, user, password, db_name, jid, jidpassword
|
|
|
+from config import jid, jidpassword
|
|
|
from BotClass import JabberBot
|
|
|
-#Проверка соединения и само соединение
|
|
|
-try:
|
|
|
- connection = pymysql.connect(
|
|
|
- host=host,
|
|
|
- port=3306,
|
|
|
- user=user,
|
|
|
- password=password,
|
|
|
- database=db_name,
|
|
|
- cursorclass=pymysql.cursors.DictCursor
|
|
|
- )
|
|
|
- class OrderS:
|
|
|
- Name = ""
|
|
|
- Description = ""
|
|
|
- Price = float(0)
|
|
|
- idUser = int(0)
|
|
|
- User = ""
|
|
|
- def __init__(self, User, Name, IdUser):
|
|
|
- self.Name = Name
|
|
|
- self.Description = ""
|
|
|
- self.Price = float(0)
|
|
|
- self.idUser = IdUser
|
|
|
- self.User = User
|
|
|
- def display_info(self):
|
|
|
- print(self.Name + self.Description + self.Price + self.User + self.idUser)
|
|
|
- print("Successfully connection...")
|
|
|
-except Exception as ex:
|
|
|
- print("Error connection to database...")
|
|
|
- print(ex)
|
|
|
-#Конфиг для авторизации бота
|
|
|
-#config = {
|
|
|
-# 'jid': '',
|
|
|
-# 'pass': ''
|
|
|
-#}
|
|
|
-#Добавление пользователя в базу данных
|
|
|
-def add_user(userName):
|
|
|
- with connection.cursor() as cursor:
|
|
|
- select_all_rows = "SELECT * FROM `user`"
|
|
|
- cursor.execute(select_all_rows)
|
|
|
- rows = cursor.fetchall()
|
|
|
- i = 0
|
|
|
- stringUser = str(userName).split("/")[0]
|
|
|
- for row in rows:
|
|
|
- if str(row['FullName']).split("/")[0] == stringUser:
|
|
|
- i += 1
|
|
|
- if i == 0:
|
|
|
- insert_user = "INSERT INTO testbotdb.user (FullName, IdStatus) VALUES(%s, %s)"
|
|
|
- val = (stringUser, 1)
|
|
|
- cursor.execute(insert_user, val)
|
|
|
- connection.commit()
|
|
|
- return True
|
|
|
- else:
|
|
|
- i = 0
|
|
|
- return False
|
|
|
+from RequestClass import RequestDataBase
|
|
|
|
|
|
-IDORDER = 0
|
|
|
-mylist = set()
|
|
|
+requesDB = RequestDataBase()
|
|
|
#Основной метод для обработки сообщинй от пользователя
|
|
|
def message_handler(conn, mess):
|
|
|
-
|
|
|
text = mess.getBody()
|
|
|
user = mess.getFrom()
|
|
|
- #Проверка статуса пользователя
|
|
|
- with connection.cursor() as cursor:
|
|
|
- sqlproverka = "SELECT * FROM testbotdb.user WHERE Fullname = %s"
|
|
|
- cursor.execute(sqlproverka, user)
|
|
|
- status = cursor.fetchone()
|
|
|
-
|
|
|
- if add_user(user):
|
|
|
- conn.send(xmpp.Message(user, 'Вас приветствует тестовый бот для создания, просмотра и управления заказами.\nВоспользуйтесь коммандой help для ознокомления с моим функционалом.'))
|
|
|
|
|
|
- elif status['IdStatus'] == 2 and status['FullName'] == user and text != 'cancel':
|
|
|
- InsertOderName(text, status['idUser'], user)
|
|
|
- conn.send(xmpp.Message(user, 'Укажите описание заказа:'))
|
|
|
+ if str(text).startswith("!"):
|
|
|
+ commands_request(conn, mess)
|
|
|
+ else:
|
|
|
+ conn.send(xmpp.Message(user, "Я тебя не понимаю..."))
|
|
|
|
|
|
- elif status['IdStatus'] == 3 and status['FullName'] == user and text != 'cancel':
|
|
|
- InsertOderDescription(text, IDORDER, user)
|
|
|
- print(IDORDER)
|
|
|
- conn.send(xmpp.Message(user, 'Укажите цену:'))
|
|
|
+def commands_request(conn, mess):
|
|
|
+ try:
|
|
|
+ text = mess.getBody()
|
|
|
+ user = mess.getFrom()
|
|
|
|
|
|
- elif status['IdStatus'] == 4 and status['FullName'] == user and text != 'cancel':
|
|
|
- InsertOderPrice(text, IDORDER, user)
|
|
|
- print(IDORDER)
|
|
|
- conn.send(xmpp.Message(user, 'Вы точно хотите добавить заказ[y/n]:'))
|
|
|
+ arguments = str(text).split()
|
|
|
+ if text == "!addcl":
|
|
|
+ conn.send(xmpp.Message(user, requesDB.add_car_log("K")))
|
|
|
+ elif str(text).startswith("!delcl"):
|
|
|
+ conn.send(xmpp.Message(user, requesDB.del_car_log('1')))
|
|
|
|
|
|
- elif status['IdStatus'] == 5 and status['FullName'] == user and text != 'cancel':
|
|
|
- if text == 'y':
|
|
|
- conn.send(xmpp.Message(user, 'Заказ успешно добавлен!'))
|
|
|
else:
|
|
|
- changeOrderStatus(1, user)
|
|
|
- conn.send(xmpp.Message(user, 'Отменено.'))
|
|
|
+ conn.send(xmpp.Message(user, "Такой команды нет"))
|
|
|
|
|
|
- else:
|
|
|
- if text == "help":
|
|
|
- conn.send(xmpp.Message(user, '\nhelp - предоставляет список доступных комманд\ncancel - отмена любой из операций\naddorder - добавить заказ\ndeleteorder - удалить заказ\nlistorder - показывает список заказов\nwheather - показывает погоду'))
|
|
|
- elif text == "cancel":
|
|
|
- changeOrderStatus(1, user)
|
|
|
- conn.send(xmpp.Message(user, 'Отменено.'))
|
|
|
- elif text == "addorder":
|
|
|
- changeOrderStatus(2, user)
|
|
|
- conn.send(xmpp.Message(user, 'Укажите имя заказа:'))
|
|
|
- else:
|
|
|
- conn.send(xmpp.Message(user, 'Комманда не определена. Воспользуйтесь командой help.'))
|
|
|
-#Изменения статуса
|
|
|
-def changeOrderStatus(statusId, user):
|
|
|
- with connection.cursor() as cursor:
|
|
|
- sql = "UPDATE testbotdb.user SET IdStatus = %s WHERE FullName = %s"
|
|
|
- val = (statusId, user)
|
|
|
- cursor.execute(sql, val)
|
|
|
- connection.commit()
|
|
|
-#Метод для добавления имени и пользователя
|
|
|
-def InsertOderName(ordername, orderiduser, user):
|
|
|
- try:
|
|
|
- with connection.cursor() as cursor:
|
|
|
- sqlidUser = "SELECT idUser FROM testbotdb.user WHERE Fullname = %s"
|
|
|
- cursor.execute(sqlidUser, user)
|
|
|
- idUser = cursor.fetchone()
|
|
|
- print(idUser['idUser'])
|
|
|
- sql = "INSERT INTO testbotdb.order (NameOrder, IdUser) VALUES (%s, %s)"
|
|
|
- val = (ordername, idUser['idUser'])
|
|
|
- #orderss.append(OrderS(user, ordername, idUser['idUser']))
|
|
|
- order = OrderS(user, ordername, idUser['idUser'])
|
|
|
- orders = [order]
|
|
|
- resultorder = sorted(orders, key=lambda ord: ord.User)
|
|
|
- mylist.add(OrderS(user, ordername, idUser['idUser']))
|
|
|
- for item in resultorder:
|
|
|
- if user == item.User:
|
|
|
- print(item.Name)
|
|
|
- #cursor.execute(sql, val)
|
|
|
- #connection.commit()
|
|
|
- #global IDORDER
|
|
|
- #IDORDER = cursor.lastrowid
|
|
|
- #changeOrderStatus(3, user)
|
|
|
except Exception as ex:
|
|
|
- print(ex)
|
|
|
-#Метод для добавления описания
|
|
|
-def InsertOderDescription(orderdescription, idOrder, user):
|
|
|
- try:
|
|
|
- with connection.cursor() as cursor:
|
|
|
- sql = "UPDATE testbotdb.order SET Description = %s WHERE idOrder = %s"
|
|
|
- val = (orderdescription, idOrder)
|
|
|
- cursor.execute(sql, val)
|
|
|
- connection.commit()
|
|
|
- changeOrderStatus(4, user)
|
|
|
- except Exception as ex:
|
|
|
- print(ex)
|
|
|
-#Метод для добавления цены
|
|
|
-def InsertOderPrice(orderprice, idOrder, user):
|
|
|
- try:
|
|
|
- with connection.cursor() as cursor:
|
|
|
- sql = "UPDATE testbotdb.order SET Price = %s WHERE idOrder = %s"
|
|
|
- val = (float(orderprice), idOrder)
|
|
|
- cursor.execute(sql, val)
|
|
|
- connection.commit()
|
|
|
- changeOrderStatus(5, user)
|
|
|
- except Exception as ex:
|
|
|
- print(ex)
|
|
|
+ conn.send(xmpp.Message(user, str(ex)))
|
|
|
+
|
|
|
+
|
|
|
#Авторизация и запуск бота
|
|
|
bot = JabberBot(jid, jidpassword)
|
|
|
bot.register_handler('message', message_handler)
|