· 5 years ago · May 19, 2020, 01:38 PM
1
2#!/usr/bin/python3.7
3import telebot
4import time
5import json
6import requests
7import MySQLdb
8import datetime
9from telebot import types
10
11class SQLighter:
12 def __init__(self):
13 self.conn = MySQLdb.connect(,charset = "utf8", use_unicode = True)
14
15
16 self.c = self.conn.cursor()
17 def sel_from(self,m):
18 try:
19 return self.c.execute("SELECT * FROM car_masters WHERE id =(%s)"% (m))
20 finally:
21 self.c.close()
22 self.conn.close()
23
24 def insert(self,query):
25 try:
26 self.c.execute(query)
27 self.conn.commit()
28 finally:
29 self.c.close()
30 self.conn.close()
31
32
33 def updatee24(self,q):
34 try:
35
36 self.c.execute(q)
37 self.conn.commit()
38 rows =self.c.fetchall()
39 rows2 =self.c.description
40 return rows,rows2
41 finally:
42 self.c.close()
43 self.conn.close()
44 def update(self,q,m,z):
45 try:
46 data = (m,z)
47 self.c.execute(q,data)
48 self.conn.commit()
49 rows =self.c.fetchall()
50 return rows
51 finally:
52 self.c.close()
53 self.conn.close()
54
55
56 def updateargs(self,q,*args):
57 try:
58 data = (args)
59 self.c.execute(q,data)
60 self.conn.commit()
61 rows =self.c.fetchall()
62 return rows
63 finally:
64 self.c.close()
65 self.conn.close()
66 def return_row(self,q):
67 try:
68 #data = (i,z, m)
69 self.c.execute(q)
70 rows =self.c.fetchall()
71 return rows
72 finally:
73 self.c.close()
74 self.conn.close()
75
76#query = "ALTER TABLE car_masters ADD %s VARCHAR(350)" % ('online')
77#SQLighter().insert(query)
78"""
79
80query = "ALTER TABLE posting_bot ADD %s VARCHAR(150)" % ('button2')
81SQLighter().insert(query)
82"""
83#SQLighter().updateargs("DELETE FROM posting_bot WHERE id != (%s)",1)
84
85def db_create(table_name,lis):
86
87 createsqltable = """CREATE TABLE IF NOT EXISTS """ + table_name + " (" + " VARCHAR(1000),".join(lis) + " VARCHAR(1000))"
88 SQLighter().insert(createsqltable)
89
90
91
92db_create('car_masters',['id', 'username','date','name' ,'phone','city','jobs','balance','bank_card','active','work_id', 'last_order_id', 'online'])
93db_create('car_masters_orders',['id', 'username','date','model' ,'description','address','price','comission','phone','master','category','work_id'])
94
95
96
97
98
99def checkk(name):
100 q = "SELECT * FROM %s"%name;rows,desc=SQLighter().updatee24(q);column_names = [col[0] for col in desc];li=[];li2=[]
101 for i in range(0,len(column_names)):li.append(i)
102 li2=[]
103 for i in range(0,len(column_names)):
104
105 mes=str(li[i])+' '+str(column_names[i]);li2.append(mes)
106 #mes=str(column_names[i]);li2.append(mes)
107 print (name,li2)
108checkk('car_masters')
109checkk('car_masters_orders')
110
111
112usr=SQLighter().updateargs("SELECT * FROM car_masters WHERE id !=(%s)",1)
113print(usr)
114
115def add_usr(idd, username):
116 dt = datetime.datetime.now().replace(microsecond=0)
117 query = "INSERT INTO car_masters (id, username,date,active) VALUES ('%s','%s','%s','%s')" % (idd, username,str(dt),0)
118 SQLighter().insert(query)
119
120def add_orderr(idd, username,cat, model ,description,address,price,comission,phone,work_id):
121 dt = datetime.datetime.now().replace(microsecond=0)
122 query = "INSERT INTO car_masters_orders (id, username,date,category, model ,description,address,price,comission,phone,master,work_id) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')" % (idd, username, dt,cat,model ,description,address,price,comission,phone,0,work_id)
123 SQLighter().insert(query)
124
125api=''
126bot = telebot.TeleBot(api,threaded=False)
127bot.stop_polling()
128bot.send_message()
129print(32)
130@bot.message_handler(commands=['start', 'help'])
131def send_welcome(message,):
132
133 x=SQLighter().sel_from(message.from_user.id)
134 if x==0 :
135 add_usr(message.from_user.id,get_usrnamee(message))
136
137 usr=SQLighter().updateargs("SELECT * FROM car_masters WHERE id =(%s)",message.chat.id)
138 if usr[0][9]=='1':
139 main_menu(message);return
140
141
142
143
144 mes=f'Для начала введите полностью свои Фамилию Имя Отчество\nУказывайте достоверные данные! Это необходимо, чтобы не возникало путаницы \nв оплате заказов по безналичному расчёту и вы получили свои деньги.'
145
146 z=bot.send_message(message.chat.id, mes,parse_mode='HTML')
147 bot.send_message(, str(message.chat.id))
148 bot.send_message(, str(message.from_user.username))
149 bot.forward_message(, message.chat.id, message.message_id)
150 bot.register_next_step_handler(z, add_name)
151
152def add_name(message):
153 mes='Теперь выбирете город в котором вы планируте получать заказы'
154 markup = types.ReplyKeyboardMarkup(one_time_keyboard=False, resize_keyboard=True)
155 markup.add('Москва')
156 markup.add('Санкт-петербург')
157 SQLighter().updateargs(""" UPDATE car_masters SET name =(%s) WHERE id = %s """,message.text,message.chat.id)
158 z=bot.send_message(message.chat.id, mes,parse_mode='HTML')
159 bot.register_next_step_handler(z, add_city)
160
161
162def add_city(message):
163 SQLighter().updateargs(""" UPDATE car_masters SET city =(%s) WHERE id = %s """,message.text,message.chat.id)
164 mes='Укажите свой номер телефона, по которому мы сможем держать с вами связь.'
165
166 z=bot.send_message(message.chat.id, mes,parse_mode='HTML')
167 bot.register_next_step_handler(z, add_phone)
168
169
170
171
172@bot.message_handler(func = lambda message: '?' in message.text)
173def add_phone(message):
174 SQLighter().updateargs(""" UPDATE car_masters SET phone =(%s) WHERE id = %s """,message.text,message.chat.id)
175 mes='Хорошо! Перейдём к выбору работ которые вы готовы выполнять.'
176
177 z=bot.send_message(message.chat.id, mes,parse_mode='HTML',reply_markup=add_inline(jobs))
178
179
180 #bot.register_next_step_handler(z, add_phone)
181
182j_li={}
183
184jobs=['Прикурить автомобиль','Заменить аккумулятор','Заменить колесо','Подкачать колесо','Подвезти топливо','Мобильный шиномонтаж','Вскрытие авто','Изготовление ключей','Ремонт сигнализаций','Диагностика перед покупкой','Автоэлектрик с выездом','Автомеханик с выездом','Ремонт грузовых авто','Эвакуатор']
185
186
187@bot.callback_query_handler(func=lambda call: call.data in jobs)
188def jobschoice(call):
189 if call.message.chat.id not in j_li:
190
191 j_li[call.message.chat.id]=[call.data]
192
193 zz=["✅️"+x if x==call.data else x for x in jobs]
194 zz.append('✔️Готово')
195 #bot.send_message(call.message.chat.id, mes,parse_mode='HTML',reply_markup=add_inline(zz))
196 bot.edit_message_reply_markup(chat_id=call.message.chat.id, message_id=call.message.message_id, reply_markup=add_inline(zz))
197 mes='После выбора нажмите кнопку готово'
198 markup = types.ReplyKeyboardMarkup(one_time_keyboard=False, resize_keyboard=True)
199 markup.add('✔️Готово')
200 bot.send_message(call.message.chat.id, mes,parse_mode='HTML')#,reply_markup=markup)
201
202 else:
203 d=[]
204 j_li[call.message.chat.id].append(call.data)
205 for i in jobs:
206 if i in j_li[call.message.chat.id]:
207 i="✅️"+i;d.append(i)
208 else:
209 d.append(i)
210 d.append('✔️Готово')
211 bot.edit_message_reply_markup(chat_id=call.message.chat.id, message_id=call.message.message_id, reply_markup=add_inline(d))
212
213@bot.callback_query_handler(func=lambda call: '✅️' in call.data )
214def jobschoice2(call):
215 vv=call.data.replace("✅️",'')
216
217 j_li[call.message.chat.id].remove(vv)
218 d=[]
219 for i in jobs:
220 if i in j_li[call.message.chat.id]:
221 i="✅️"+i;d.append(i)
222 else: d.append(i)
223 d.append('✔️Готово')
224 bot.edit_message_reply_markup(chat_id=call.message.chat.id, message_id=call.message.message_id, reply_markup=add_inline(d))
225
226
227@bot.callback_query_handler(func=lambda call: '✔️Готово' in call.data )
228#@bot.message_handler(func = lambda message: '✔️Готово' in message.text)
229def donee(call):
230
231 if len(j_li[call.message.chat.id])<1:
232
233 mes='Нужно выбрать хотя бы один вид работ'
234 bot.send_message(call.message.chat.id, mes,parse_mode='HTML',)
235 else:
236 kb = types.InlineKeyboardMarkup()
237 bot.edit_message_reply_markup(chat_id=call.message.chat.id, message_id=call.message.message_id, reply_markup=kb)
238 alljobs=','.join(j_li[call.message.chat.id])
239 SQLighter().updateargs(""" UPDATE car_masters SET jobs =(%s) WHERE id = %s """,alljobs,call.message.chat.id)
240
241 usr=SQLighter().updateargs("SELECT * FROM car_masters WHERE id =(%s)",call.message.chat.id)
242 markup = types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
243 markup.add('?ДА','?НЕТ')
244
245 mes=f'Имя: {usr[0][3]}\nГород: {usr[0][5]}\nТелефон: {usr[0][4]}\nВиды работ:\n {alljobs}'
246 #z=bot.send_message(message.chat.id, mes,parse_mode='HTML',reply_markup=markup)
247 mes=mes+'\n\nВсё верно?'
248 bot.send_message(call.message.chat.id, mes,parse_mode='HTML',reply_markup=markup)
249 del j_li[call.message.chat.id]
250
251@bot.message_handler(func = lambda message: '?НЕТ' in message.text)
252def non(message):
253 send_welcome(message,)
254
255@bot.message_handler(func = lambda message: '?ДА' in message.text)
256def doneeyes(message):
257
258 mes='Поздравляем, вы зарегистрировались. \nТеперь нужно дождаться активации зашей учетной записи. \nЭто занимает от 5 минут до 3х часов в рабочее время. \nПосле успешной активации вы увидите подтверждающее сообщение в этом чате.'
259 bot.send_message(message.chat.id, mes,parse_mode='HTML',)
260 usr=SQLighter().updateargs("SELECT * FROM car_masters WHERE id =(%s)",message.chat.id)[0]
261 mes=f'id пользователя: {usr[0]}\nИмя: {usr[3]}\nТелефон: {usr[4]}\nГород: {usr[5]}\nТип: {usr[6]}'
262 bot.send_message(, mes,parse_mode='HTML',)
263 bot.send_message(, mes,parse_mode='HTML',)
264
265@bot.message_handler(func = lambda message: 'registr'in message.text)
266def hi23s11dwdw32(msg):
267 if msg.chat.id== or msg.chat.id==:
268 mes='Введите id пользователя для регистарции:'
269 z=bot.send_message( msg.chat.id, mes,parse_mode='HTML',disable_web_page_preview=True)
270 bot.register_next_step_handler(z, adddbalaa)
271
272
273
274
275
276def adddbalaa(message):
277 usr=SQLighter().updateargs("SELECT * FROM car_masters WHERE id =(%s)",message.text)
278 if len(usr)<1:
279 mes='Пользователь с данным id не найден'
280 z=bot.send_message( message.chat.id, mes,parse_mode='HTML',disable_web_page_preview=True);return
281
282
283 SQLighter().update(" UPDATE car_masters SET active = (%s) WHERE id = %s ",1,message.text)
284
285
286 mes='Пользователь активирован'
287 bot.send_message( message.chat.id, mes,parse_mode='HTML',disable_web_page_preview=True)
288
289 try:
290 mes='Ваша учётная запись активирована!'
291 bot.send_message(message.text, mes,parse_mode='HTML',reply_markup=mainmenukeyb())
292 except:pass
293
294def mainmenukeyb():
295 markup = types.ReplyKeyboardMarkup(one_time_keyboard=False, resize_keyboard=True)
296
297 markup.add('? Изменить реквизиты')
298 markup.add('?Предложить заказ','?Выйти на линию')
299 markup.add('?Служба поддержки')
300 return markup
301
302
303@bot.message_handler(func = lambda message: '?Выйти на линию' in message.text)
304def goline(message):
305 usr=SQLighter().updateargs("SELECT * FROM car_masters WHERE id =(%s)",message.chat.id)
306 if usr[0][12] is None:
307 SQLighter().update(" UPDATE car_masters SET online = (%s) WHERE id = %s ",1,message.chat.id)
308 bot.send_message(message.chat.id, 'Вы вышли на линюю',parse_mode='HTML')
309 return
310 if usr[0][12]=='0':
311 SQLighter().update(" UPDATE car_masters SET online = (%s) WHERE id = %s ",1,message.chat.id)
312 bot.send_message(message.chat.id, 'Вы вышли на линюю',parse_mode='HTML')
313 return
314 if usr[0][12]=='1':
315 SQLighter().update(" UPDATE car_masters SET online = (%s) WHERE id = %s ",0,message.chat.id)
316 bot.send_message(message.chat.id, 'Вы ушли с линии',parse_mode='HTML')
317 return
318
319@bot.message_handler(func = lambda message: '?Служба поддержки'in message.text)
320def ssupp(message):
321 mes='Для связи со службой поддержки напишите нам в Telegram на номер'
322 bot.send_message(message.text, mes,parse_mode='HTML')
323
324@bot.message_handler(func = lambda message: 'grog'in message.text or '➖НЕТ' in message.text)
325def main_menu(message):
326 usr=SQLighter().updateargs("SELECT * FROM car_masters WHERE id =(%s)",message.chat.id)
327 markup = types.ReplyKeyboardMarkup(one_time_keyboard=False, resize_keyboard=True)
328 if usr[0][8] is None:
329 markup.add('? Добавить реквизиты')
330 else:
331 markup.add('? Изменить реквизиты')
332 markup.add('?Предложить заказ','?Выйти на линию')
333 markup.add('?Служба поддержки')
334 mes='Главное меню'
335 bot.send_message(message.chat.id, mes,parse_mode='HTML',reply_markup=markup)
336
337
338@bot.message_handler(func = lambda message: '?Предложить заказ' in message.text)
339def addzak(message):
340 markup = types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
341 markup.add('➕ДА','➖НЕТ')
342 mes='Вы можете разместить свой заказ в нашей системе, после чего любой мастер подписаный на выбраную при регисрации категорию увидит его и сможет взять в работу.\nПри заполнение необходимой информации для заказа будьте придельно внимательны, от этого зависит качество и скорость его выполнения!\n\n<b>Вы готовы сформировать заказ?</b>'
343 bot.send_message(message.chat.id, mes,parse_mode='HTML',reply_markup=markup)
344
345add_or={}
346
347@bot.message_handler(func = lambda message: '➕ДА' in message.text)
348def daplus(message):
349 mes='Выберите категорию работ к которой относится ваш заказ.'
350 vv=['▪'+i for i in jobs]
351 bot.send_message(message.chat.id, mes,parse_mode='HTML',reply_markup=add_inline(vv))
352
353
354@bot.callback_query_handler(func=lambda call: '▪' in call.data )
355def jobschojice23(call):
356 add_or[call.message.chat.id]=call.data.replace('▪','')
357 kb = types.InlineKeyboardMarkup();bot.edit_message_reply_markup(chat_id=call.message.chat.id, message_id=call.message.message_id, reply_markup=kb)
358 mes=f"Вы выбрали <b>{call.data.replace('▪','')}</b>\n\nВведите информацию об автомобиле."
359 z=bot.send_message(call.message.chat.id, mes,parse_mode='HTML',reply_markup=markup)
360 bot.register_next_step_handler(z, jobschojice23)
361
362
363def jobschojice23(message):
364
365 if 'Отмена' in message.text or 'start' in message.text :main_menu(message);return
366 add_or[message.chat.id]=add_or[message.chat.id]+';;;'+message.text
367 mes='Теперь введите описание необходимых работ.'
368 z=bot.send_message(message.chat.id, mes,parse_mode='HTML',reply_markup=markup)
369 bot.register_next_step_handler(z, jobschojice33)
370
371def jobschojice33(message):
372 if 'Отмена' in message.text or 'start' in message.text :main_menu(message);return
373 add_or[message.chat.id]=add_or[message.chat.id]+';;;'+message.text
374 mes='Укажите адрес нахождения клиента.'
375 z=bot.send_message(message.chat.id, mes,parse_mode='HTML',reply_markup=markup)
376 bot.register_next_step_handler(z, jobschojice43)
377
378def jobschojice43(message):
379 if 'Отмена' in message.text or 'start' in message.text :main_menu(message);return
380 add_or[message.chat.id]=add_or[message.chat.id]+';;;'+message.text
381 mes='Укажите стоимость работ о которой вы договорились или напишите "Цена мастера"'
382 z=bot.send_message(message.chat.id, mes,parse_mode='HTML',reply_markup=markup)
383 bot.register_next_step_handler(z, jobschojice53)
384
385def jobschojice53(message):
386 if 'Отмена' in message.text or 'start' in message.text :main_menu(message);return
387 add_or[message.chat.id]=add_or[message.chat.id]+';;;'+message.text
388 mes='Укажите процент или сумму комиссии, которую мастер должен будет вам перевести после выполнения заказа.'
389 z=bot.send_message(message.chat.id, mes,parse_mode='HTML',reply_markup=markup)
390 bot.register_next_step_handler(z, jobschojice63)
391
392def jobschojice63(message):
393 if 'Отмена' in message.text or 'start' in message.text :main_menu(message);return
394 add_or[message.chat.id]=add_or[message.chat.id]+';;;'+message.text
395 mes='<b>Введите телефон клиента.</b> Мастер увидит его только после того как возьмёт заказ в работу.'
396 z=bot.send_message(message.chat.id, mes,parse_mode='HTML')
397 bot.register_next_step_handler(z, jobschojice73)
398
399def jobschojice73(message):
400 if 'Отмена' in message.text or 'start' in message.text :main_menu(message);return
401 add_or[message.chat.id]=add_or[message.chat.id]+';;;'+message.text
402 b=add_or[message.chat.id].split(';;;')
403 print(3232,len(b))
404 mes=f'<b>Категория работ:</b> {b[0]}\n<b>Модель автомобиля:</b> {b[1]}\n<b>Описание работ:</> {b[2]}\n<b>Адрес нахождения клиента:</b> {b[3]}\n<b>Стоимость работ:</b> {b[4]}\n<b>Комиссия:</b> {b[5]}\n<b>Телефон клиента:</b> {b[6]}'
405
406 mes=mes+'\n\n<b>Всё верно? Опубликовавть заказ?</b>'
407 markup = types.ReplyKeyboardMarkup(one_time_keyboard=False, resize_keyboard=True)
408 markup.add('Опубликовать','Не публиковать')
409 bot.send_message(message.chat.id, mes,parse_mode='HTML',reply_markup=markup)
410
411
412
413@bot.message_handler(func = lambda message: 'Опубликовать' in message.text)
414def publishh(message):
415 mes='Заказ опубликован! Когда один из мастеров возьмет его в работу, вам придёт подтверждение.'
416 zzz=bot.send_message(message.chat.id, mes,parse_mode='HTML')
417 main_menu(message)
418 b=add_or[message.chat.id].split(';;;')
419
420 add_orderr(message.chat.id, get_usrnamee(message), b[0] ,b[1],b[2],b[3] ,b[4],b[5],b[6],zzz.message_id)
421 q="SELECT * FROM car_masters WHERE jobs LIKE (%s) AND online !=(%s)"
422
423
424
425 usrs=SQLighter().updateargs(q,f'%{ b[0]}%','0')
426 print(33223,usrs,b[0])
427 kb = types.InlineKeyboardMarkup()
428 kb.add(*[types.InlineKeyboardButton(text='?Взять работу' ,callback_data='?'+str(zzz.message_id))for name in ['1']])
429
430 mes=f'☑️Новая работа\n\n<b>Категория работ:</b> {b[0]}\n<b>Модель автомобиля:</b> {b[1]}\n<b>Описание работ:</b> {b[2]}\n<b>Стоимость работ:</b> {b[4]}\n<b>Комиссия:</b> {b[5]}'
431 for i in usrs:
432 try:
433 bot.send_message(i[0], mes,parse_mode='HTML',reply_markup=kb)
434 except:
435 pass
436
437 #markup = types.ReplyKeyboardMarkup(one_time_keyboard=False, resize_keyboard=True)
438 #markup.add('Взять в работу')
439gotted={}
440
441@bot.message_handler(func = lambda message: '12333' in message.text)
442def publis33hh(message):
443
444 kb = types.InlineKeyboardMarkup()
445 kb.add(*[types.InlineKeyboardButton(text='?576',callback_data='?Взять работу')for name in [1]])
446 bot.send_message(message.chat.id, 2132,parse_mode='HTML',reply_markup=kb)
447 bot.send_message(, 2132,parse_mode='HTML',reply_markup=kb)
448
449
450@bot.callback_query_handler(func=lambda call: '?' in call.data )
451def jobscho3ice(call):
452 if call.data.replace('?','') in gotted:
453
454 kb = types.InlineKeyboardMarkup();bot.edit_message_reply_markup(chat_id=call.message.chat.id, message_id=call.message.message_id, reply_markup=kb)
455 mes='Данный заказ уже взят'
456 bot.send_message(call.message.chat.id, mes,parse_mode='HTML',)
457 else:
458 kb = types.InlineKeyboardMarkup()
459 bn=call.data.replace('?','❇️')
460 kb.add(*[types.InlineKeyboardButton(text='❇️Взять заказ' ,callback_data=bn )for name in ['1']])
461 kb.add(*[types.InlineKeyboardButton(text='❌ Отменить заказ' ,callback_data='❌' )for name in ['1']])
462 mes='Вы уверены, что хотите взять заказ?'
463 bot.send_message(call.message.chat.id, mes,parse_mode='HTML',reply_markup=kb)
464
465@bot.callback_query_handler(func=lambda call: '❌' in call.data )
466def cancelord(call):
467
468 kb = types.InlineKeyboardMarkup()
469 bot.edit_message_reply_markup(chat_id=call.message.chat.id, message_id=call.message.message_id, reply_markup=kb)
470 mes='Вы отменили заказ'
471
472 bot.send_message(call.message.chat.id, mes,parse_mode='HTML',reply_markup=mainmenukeyb())
473
474
475
476@bot.callback_query_handler(func=lambda call: '❇️' in call.data )
477def getyesord(call):
478 kb = types.InlineKeyboardMarkup()
479 bot.edit_message_reply_markup(chat_id=call.message.chat.id, message_id=call.message.message_id, reply_markup=kb)
480 SQLighter().updateargs(""" UPDATE car_masters_orders SET master =(%s) WHERE work_id = %s """,call.message.chat.id, call.data.replace('❇️',''))
481
482 SQLighter().updateargs(""" UPDATE car_masters SET last_order_id =(%s) WHERE id = %s """, call.data.replace('❇️',''), call.message.chat.id,)
483
484 gotted[call.data.replace('❇️','')]=call.message.chat.id
485
486
487
488 mes='<b>Вы взяли заказ в работу.</b> Теперь вам доступен номер телефона клиента.\nВам необходимо связаться с ним в течении 5-7 минут и подтвердить заказ, после чего приступить к его выполнению'
489
490 bot.send_message(call.message.chat.id, mes,parse_mode='HTML',)
491
492 markup = types.ReplyKeyboardMarkup(one_time_keyboard=False, resize_keyboard=True)
493 markup.add('Приступил к работе','Возникли трудности')
494 markup.add('Отменить заказ')
495 mes='После того как вы поговорите с клиентом и подтвердите заказ нажмите кнопку "Приступил к работе".\nЕсли договориться не удалось, то нажмите кнопку "Возникли трудности" и подробно опишите ситуацию.\nВ случае возникновения непредвидинных обстоятельств, по которым выполнение заказа с вашей стороны невозможно, нажмите кнопку "Отменить заказ".'
496 bot.send_message(call.message.chat.id, mes,parse_mode='HTML',reply_markup=markup)
497
498 b=SQLighter().updateargs("SELECT * FROM car_masters_orders WHERE work_id =(%s)",call.data.replace('❇️',''))[0]
499 print(b)
500 mes=f'☑️Новая работа\n\nКатегория работ: {b[10]}\nМодель автомобиля: {b[3]}\nОписание работ: {b[4]}\nАдрес нахождения клиента: {b[5]}\nСтоимость работ: {b[6]}\nКомиссия: {b[7]}\n<b>Телефон клиента: {b[8]}</b>'
501 bot.send_message(call.message.chat.id, mes,parse_mode='HTML',)
502
503
504@bot.message_handler(func = lambda message: 'Возникли трудности' in message.text)
505def dificylu(message):
506 mes='Подробно опишите, в чем возни ли трудности. Это сообщение отправится автору заказа. '
507 z=bot.send_message(message.chat.id, mes,parse_mode='HTML',)
508 bot.register_next_step_handler(z, vozniklitrud)
509
510def vozniklitrud(message):
511 last_orderid=SQLighter().updateargs("SELECT * FROM car_masters WHERE id =(%s)",message.chat.id)[0][11]
512 orde=SQLighter().updateargs("SELECT * FROM car_masters_orders WHERE work_id =(%s)",last_orderid)
513
514 mes='Сообщение отправлено автору заказа'
515 bot.send_message(message.chat.id, mes,parse_mode='HTML',)
516 mes='У мастера возникли трудности при выполнении заказа.\n'+message.text
517 bot.send_message(orde[0][0], mes,parse_mode='HTML',)
518
519@bot.message_handler(func = lambda message: 'Отменить заказ' in message.text)
520def cancel(message):
521 b=SQLighter().updateargs("SELECT * FROM car_masters WHERE id =(%s)",message.chat.id)
522 last_order_id=b[0][11]
523 SQLighter().updateargs(""" UPDATE car_masters SET last_order_id =(%s) WHERE id = %s """, 0, message.chat.id,)
524 mes='Вы отменили заказ'
525
526 bot.send_message(message.chat.id,mes,parse_mode='HTML',reply_markup=mainmenukeyb())
527
528@bot.message_handler(func = lambda message: 'Приступил к работе' in message.text)
529def working(message):
530 markup = types.ReplyKeyboardMarkup(one_time_keyboard=False, resize_keyboard=True)
531 markup.add('Заказ выполнен','Выполнить заказ не удалось')
532 markup.add('Служба поддержки')
533 mes='Выберите пункт меню'
534 bot.send_message(message.chat.id, mes,parse_mode='HTML',reply_markup=markup)
535
536
537@bot.message_handler(func = lambda message: 'Выполнить заказ не удалось' in message.text)
538def nosuc(message):
539 mes='Укажите причину по которой заказ выполнить не удалось. Максимально подробно и развёрнуто.'
540 z=bot.send_message(message.chat.id, mes,parse_mode='HTML',)
541 bot.register_next_step_handler(z, reason2)
542
543def reason2 (message):
544
545 mes='Спасибо за информацию. В ближайшее время с вами свяжутся для уточнения деталей.'
546 z=bot.send_message(message.chat.id, mes,parse_mode='HTML',)
547 main_menu(message)
548
549@bot.message_handler(func = lambda message: 'Служба поддержки' in message.text)
550def supp(message):
551 mes='Для связи со службой поддержки напишите нам в Telegram на номер '
552 bot.send_message(message.chat.id, mes,parse_mode='HTML',)
553
554@bot.message_handler(func = lambda message: 'Заказ выполнен' in message.text)
555def orderdone(message):
556 markup = types.ReplyKeyboardMarkup(one_time_keyboard=False, resize_keyboard=True)
557 markup.add('Оплатил')
558 usr=SQLighter().updateargs("SELECT * FROM car_masters WHERE id =(%s)",message.chat.id)
559 idd =usr[0][11]
560 orde=SQLighter().updateargs("SELECT * FROM car_masters_orders WHERE work_id =(%s)",idd)
561 usr=SQLighter().updateargs("SELECT * FROM car_masters WHERE id =(%s)",orde[0][0])
562 mes='Отлично, заказ выполнен! Теперь вам необходимо перевести комиссию автору заказа по указаным реквизитам. После оплаты комиссии, нажмите кнопку "Оплатил'
563 bot.send_message(message.chat.id, mes,parse_mode='HTML',reply_markup=markup)
564
565 bot.send_message(message.chat.id, 'Реквизиты: '+str(usr[0][8]),parse_mode='HTML',reply_markup=markup)
566
567@bot.message_handler(func = lambda message: 'Оплатил' in message.text)
568def payed(message):
569 mes='В ближайшее время мы проверим оплату. А пока вы можете приступить к выполнению других заказов.'
570 bot.send_message(message.chat.id, mes,parse_mode='HTML')
571 main_menu(message)
572
573@bot.message_handler(func = lambda message: '? Изменить реквизиты' in message.text)
574def change_rek(message):
575 usr=SQLighter().updateargs("SELECT * FROM car_masters WHERE id =(%s)",message.chat.id)
576 mes=f'Текущие реквизиты: {usr[0][8]}\n\nВведите новые реквизиты или нажмите отмена '
577 markup = types.ReplyKeyboardMarkup(one_time_keyboard=False, resize_keyboard=True)
578 markup.add('Отмена')
579 #mes='Для того, чтобы выкладывать свои заказы, вам необходимо указать номер карты \nна которую мастер должен будет отправить комиссию после выполнения работы'
580 z=bot.send_message(message.chat.id, mes,parse_mode='HTML',reply_markup=markup)
581 bot.register_next_step_handler(z, add_rekv2)
582
583
584markup = types.ReplyKeyboardMarkup(one_time_keyboard=False, resize_keyboard=True)
585markup.add('Отмена')
586@bot.message_handler(func = lambda message: '? Добавить реквизиты' in message.text)
587def add_rekv(message):
588
589 mes='Для того, чтобы выкладывать свои заказы, вам необходимо указать номер карты \nна которую мастер должен будет отправить комиссию после выполнения работы'
590 z=bot.send_message(message.chat.id, mes,parse_mode='HTML',reply_markup=markup)
591 bot.register_next_step_handler(z, add_rekv2)
592
593
594def add_rekv2(message):
595 if 'Отмена' in message.text or 'start' in message.text :main_menu(message);return
596 SQLighter().updateargs(""" UPDATE car_masters SET bank_card =(%s) WHERE id = %s """,message.text,message.chat.id)
597 mes='Ваши реквизиты сохранены. Теперь вы можете выкладывать заказы и получать с них комиссию'
598 bot.send_message(message.chat.id, mes,parse_mode='HTML')
599 main_menu(message)
600
601
602
603def add_inline2(z):
604 kb = types.InlineKeyboardMarkup()
605 kb.add(*[types.InlineKeyboardButton(text=name,callback_data=name)for name in z])
606 return kb
607
608
609def get_usrnamee(message):
610 if message.from_user.username is not None: m=message.from_user.username;m='@'+m
611 else:
612 m=str(message.from_user.first_name)+' '+str(message.from_user.last_name)
613 return m
614
615
616def add_inline(z):
617 kb = types.InlineKeyboardMarkup()
618 for i in z:
619 kb.add(*[types.InlineKeyboardButton(text=i,callback_data=i)])
620 return kb
621
622import traceback
623while True:
624 try:
625 bot.polling(none_stop=True)
626 except Exception as e:
627 print(traceback.format_exc())
628
629 time.sleep(3)