Guest User

Untitled

a guest
Apr 24th, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 37.83 KB | None | 0 0
  1. import vk_api
  2. from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
  3. import json
  4. import requests
  5. import wget
  6. from gle import *
  7. import os
  8. import copy
  9. from oauth2client.service_account import ServiceAccountCredentials
  10. import httplib2
  11. import googleapiclient.discovery
  12. import time
  13. import schedule
  14. from threading import Thread
  15. from random import choice,sample
  16. from requests.exceptions import ReadTimeout
  17.  
  18.  
  19. def checker(apib, spreadsheetid):
  20.     Counter(apib, spreadsheetid)
  21.     flag2 = 1
  22.  
  23.  
  24. def checker_D(apib, spreadsheetid):
  25.     Counter_d(apib, spreadsheetid)
  26.     flag2 = 2
  27.  
  28.  
  29. def checker_C():
  30.     flag2 = 0
  31.     for i in album_id:
  32.         album_id[i] = vk_photo.method('photos.createAlbum',
  33.                        {'title': f"{i}  День {str(day_t() + 1)}",
  34.                         'group_id': group_id})['id']
  35.  
  36. def sheduler():
  37.     schedule.every().day.at("22:00").do(checker, apib, spreadsheetid)
  38.     schedule.every().day.at("23:00").do(checker_D, apib, spreadsheetid)
  39.     schedule.every().day.at("00:00").do(checker_C)
  40.     while True:
  41.         schedule.run_pending()
  42.         time.sleep(5)
  43. if __name__ == "__main__":
  44.     MyBot = 'Mybot-9655a9770da5.json'
  45.     Credentials = ServiceAccountCredentials.from_json_keyfile_name(MyBot, ['https://www.googleapis.com/auth/drive', 'https://www.googleapis.com/auth/spreadsheets']) #сформировали запрос
  46.     Authorize = Credentials.authorize(httplib2.Http()) # отсылаем запрос выше и авторизируемся
  47.     apib = googleapiclient.discovery.build('sheets', 'v4', http=Authorize)# обращаемся к конкретному апи и указываем его ваерсию, отсылаем токен авторизации
  48.     spreadsheetid = '123'
  49.     token = '123'
  50.     acess_token = '123'
  51.     group_id = 123
  52.     flag2 = 0
  53.     thr = Thread(target=sheduler)
  54.     thr.start()
  55.     teams = get_teams(apib, spreadsheetid)# TODO
  56.     userT = get_us(apib, spreadsheetid)
  57.     album_id = {x[0]: 269616730 for x in teams}
  58.     album_challenge_id = 269616730
  59.     vk_message = vk_api.VkApi(token=token)
  60.     vk_photo = vk_api.VkApi(token=acess_token)
  61.     v = '5.103'#версия приложения
  62.     vk_message._auth_token()
  63.     vk_message.get_api()
  64.     vk_photo._auth_token()
  65.     vk_photo.get_api()
  66.  
  67.     is_in_Competition=False
  68.     def get_button(label='but', color='red', payload=''):
  69.         return {
  70.             "action": {
  71.                 "type": 'text',
  72.                 'payload': payload,  # идентификатор кнопки
  73.                 'label': label
  74.             },
  75.             "color": color
  76.         }
  77.  
  78.     keyboard = { #создаем клавиатуру
  79.         "one_time": False,
  80.         "buttons": [
  81.             [get_button(label="Загрузить работу", color='secondary')],
  82.             [get_button(label="Загрузить долг!", color='secondary'), get_button(label="Загрузить на батл", color='secondary')],[get_button(label="Правила", color='secondary')]
  83.                     ]
  84.     }
  85.     keyboard_Leader = {
  86.         "one_time": False,
  87.         "buttons": [
  88.             [get_button(label="Загрузить работу", color='secondary')],
  89.             [get_button(label="Загрузить долг!", color='secondary'),
  90.              get_button(label="Загрузить на батл", color='secondary')],[get_button(label="Загрузить за кого-то", color='secondary')],
  91.             [get_button(label="Правила", color='secondary')],
  92.             [get_button(label="Статистика общая", color='secondary'),get_button(label="Статистика дня", color='secondary')]
  93.         ]
  94.     }
  95.     keyboard_Admin = {
  96.         "one_time": False,
  97.         "buttons": [
  98.             [get_button(label="Статистика общая", color='secondary'), get_button(label="Статистика дня", color='secondary')],
  99.             [get_button(label="Начать челлендж", color='secondary')],[get_button(label="Закончить конкурс", color='secondary')],[get_button(label="Получить результаты челленджа", color='secondary')],[get_button(label="Создать альбомы", color='secondary')]
  100.         ]
  101.     }
  102.     keyboard = str(json.dumps(keyboard, ensure_ascii=False))
  103.     keyboard_Leader = str(json.dumps(keyboard_Leader, ensure_ascii=False))
  104.     keyboard_Admin = str(json.dumps(keyboard_Admin, ensure_ascii=False))
  105.  
  106.  
  107.     def Leader(vk,keyboard_Leader):
  108.         longpoll = VkBotLongPoll(vk, group_id)
  109.         for event in longpoll.listen():
  110.                 if 'Статистика общая' in event.object.message['text']:
  111.                     for i in get_Admin_statistic(event.object.message['from_id'], apib, spreadsheetid):
  112.                         vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  113.                                                             'message': i,
  114.                                                             'random_id': 0})
  115.                 elif 'Статистика дня' in event.object.message['text']:
  116.                     for i in get_day_statistic(event.object.message['from_id'], apib, spreadsheetid):
  117.                         vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  118.                                                             'message': i,
  119.                                                             'random_id': 0})
  120.                 elif ("Загрузить работу" in event.object.message['text']) or ("1" in event.object.message[
  121.                     'text']):  ## Как сделать так,чтобы бот передавал комментарий к рисунку вместе с рисуноком
  122.                     if Data(event.object.message['from_id'], apib, spreadsheetid) == day_t():
  123.                         vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  124.                                                             'message': "Вы уже сдавали работу! Ждём вас завтра!",
  125.                                                             'random_id': 0})
  126.                     else:
  127.  
  128.                         vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  129.                                                             'message': "Загружай!",
  130.                                                             'random_id': 0})
  131.  
  132.                         tmp = daylik(vk_message, keyboard, album_id)
  133.                 elif ("Загрузить долг!" in event.object.message['text']) or (
  134.                         "2" in event.object.message['text']):  # если нажать на кнопку, то проиходйет это
  135.                     if Debt(event.object.message['from_id'], apib, spreadsheetid) <= 0:
  136.                         vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  137.                                                             'message': "Вы сдали все долги!",
  138.                                                             'random_id': 0})
  139.  
  140.                     else:
  141.                         vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  142.                                                             'message': "Загружайте долг",
  143.                                                             'random_id': 0})
  144.                         tmp = debt_daylik(vk_message, keyboard)
  145.                 elif ("Загрузить за кого-то" in event.object.message['text']) or ("5" in event.object.message[
  146.                     'text']):
  147.                     vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  148.                                                         'message': "Загружай за участника",
  149.                                                         'random_id': 0})
  150.                     tmp = daylik(vk_message, keyboard, album_id,True)
  151.                 elif ("Загрузить на батл" in event.object.message['text']) or ("3" in event.object.message['text']):
  152.  
  153.                     if is_in_Competition == True:
  154.                         vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  155.                                                             'message': "Загружай на батл",
  156.                                                             'random_id': 0})
  157.  
  158.                         tmp = daylik_competition(vk_message, keyboard)
  159.                     else:
  160.                         vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  161.                                                             'message': "Конкурс ещё не начался, следите за объявлениями в группе",
  162.                                                             'random_id': 0})
  163.  
  164.                 elif ("Правила" in event.object.message['text']) or ("0" in event.object.message['text']):  # НЕ ГОТОВО
  165.                     vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  166.                                                         'message': "https://vk.com/public191601892?w=wall-191601892_2",
  167.                                                         # тут правила
  168.                                                         'random_id': 0})
  169.                 elif "назад" in event.object.message['text'].lower() \
  170.                         or ("Загрузить долг!" in event.object.message['text']) \
  171.                         or ("Загрузить работу" in event.object.message['text']) or ( "Правила" in event.object.message['text']) \
  172.                         or ("Загрузить на батл" in event.object.message['text']) \
  173.                         or ("Статистика дня" in event.object.message['text']) \
  174.                         or ("Статистика общая" in event.object.message['text']) \
  175.                         or ("Загрузить за кого-то" in event.object.message['text']) \
  176.                         or ("начать" in event.object.message['text'].lower()) \
  177.                         or ("начать_староста" in event.object.message['text'].lower()):
  178.                     return event
  179.  
  180.     def Admin_app_team(vk, name, both):
  181.         longpoll = VkBotLongPoll(vk, group_id)
  182.         for event in longpoll.listen():
  183.             if event.type == VkBotEventType.MESSAGE_NEW:
  184.                 if event.object.message['attachments'] and both == True:
  185.                     if event.object.message['attachments'][0]['type'] == 'doc':  # новая база
  186.                         url_team = event.object.message['attachments'][0]['doc']['url']
  187.                         file_team = wget.download(url_team)
  188.                         #Save(file_team,name)
  189.                         os.remove(file_team)
  190.                         break
  191.                 elif len(event.object.message['attachments']) and both == False:
  192.                     if event.object.message['attachments'][0]['type'] == 'doc':  # новая база
  193.                         url_team = event.object.message['attachments'][0]['doc']['url']
  194.                         file_team = wget.download(url_team)
  195.                         #Save(file_team, 'user.csv')
  196.                         os.remove(file_team)
  197.                     if event.object.message['attachments'][1]['type'] == 'doc':  # новая база
  198.                         url_team = event.object.message['attachments'][1]['doc']['url']
  199.                         file_team = wget.download(url_team)
  200.                         #Save(file_team, 'team.scv')
  201.                         os.remove(file_team)
  202.                 else: break
  203.     def Admin(vk,keyboard_Admin):
  204.         global album_challenge_id
  205.         longpoll = VkBotLongPoll(vk, group_id)
  206.         for event in longpoll.listen():
  207.             if event.type == VkBotEventType.MESSAGE_NEW:
  208.  
  209.                 if event.object.message['text'].lower() == 'Админ_начать':  # обратились к сообщению, образаемся к "тексту"
  210.                     vk_message.method("messages.send", {"user_id": event.object.message['from_id'],
  211.                                                         'message': 'ok',
  212.                                                         'random_id': 0, 'keyboard': keyboard_Admin})
  213.                 elif 'Статистика общая' in event.object.message['text']: # НЕОБХОДИМО ПОЛУЧИТЬ КАКИЕ УЧАСТНИКИ И ИЗ КАКОЙ КОМАНДЫ. ИМЯ И ID  ID в формате "id@1233255"
  214.                     for i in get_Admin_statistic(0,apib,spreadsheetid):
  215.                         vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  216.                                                             'message': i,
  217.                                                             'random_id': 0})
  218.                 elif 'Статистика дня' in event.object.message['text']:
  219.                     for i in get_day_statistic(0, apib, spreadsheetid):
  220.                         vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  221.                                                             'message': i,
  222.                                                             'random_id': 0})
  223.                 elif 'Начать челлендж' in event.object.message['text']:
  224.                     is_in_Competition = True
  225.                     Competition(apib,spreadsheetid)
  226.                     album_challenge_id = vk_photo.method('photos.createAlbum',{'title': str(day_t()) + " День. Челлендж", 'group_id': group_id})['id']# создает альбом для конкурсов
  227.                     vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  228.                                                         'message': "Конкурс начат",
  229.                                                         'random_id': 0})
  230.                     vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  231.                                                         'message': "Альбом для конкурса создан",
  232.                                                         'random_id': 0})
  233.                 elif 'Закончить конкурс' in event.object.message['text']:
  234.                     is_in_Competition = False
  235.                     vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  236.                                                         'message': "Конкурс завершен",
  237.                                                         'random_id': 0})
  238.                 elif 'Получить результаты челленджа' in event.object.message['text']: #нету
  239.                     for i in chellenge(0,apib,spreadsheetid):
  240.                         vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  241.                                                             'message': f'{i}',
  242.                                                             'random_id': 0})
  243.                 elif 'очистить всё' in event.object.message['text'].lower():
  244.                     # for i in vk_photo.method("wall.get",{"owner_id":-group_id})["items"]:# для стены, надо получить стандалон токен для стены
  245.                     #     vk_photo.method("wall.delete",{"owner_id":-group_id,"post_id":i["id"]})
  246.                     z=vk_photo.method("photos.getAlbums", {"owner_id": -group_id})["items"]
  247.                     vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  248.                                                         'message': "Группа очищается,ждите",
  249.                                                         'random_id': 0})
  250.                     while len(z) != 1:
  251.                         for i in z:
  252.                             if i["id"] != 270167491:
  253.                                 vk_photo.method("photos.deleteAlbum",{"group_id":group_id,"album_id":i["id"]})
  254.                         z = vk_photo.method("photos.getAlbums", {"owner_id": -group_id})["items"]
  255.                     z=vk_photo.method("photos.get", {"owner_id": -group_id, "album_id": 270167491})["items"]
  256.                     while len(z) != 0:
  257.                         for i in z:
  258.                             vk_photo.method("photos.delete",{"owner_id":-group_id,"photo_id":i["id"]})
  259.                         z = vk_photo.method("photos.get", {"owner_id": -group_id, "album_id": 270167491})["items"]
  260.                     z = vk_photo.method("groups.getMembers",{"group_id":group_id})["items"]
  261.                     while len(z) != 2:
  262.                         for i in z:
  263.                             if (i!=3967015) and (i!=230810733):
  264.                                 vk_photo.method("groups.removeUser",{"group_id":group_id,"user_id":i})
  265.                         z = vk_photo.method("groups.getMembers", {"group_id": group_id})["items"]
  266.                     vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  267.                                                             'message': "Группа очищена",
  268.                                                             'random_id': 0})
  269.  
  270.                 elif 'Создать альбомы' in event.object.message['text']:
  271.                     for i in album_id:
  272.                         album_id[i] = vk_photo.method('photos.createAlbum',
  273.                                                           {'title': f"{i}  День {str(day_t() + 1)}",
  274.                                                            'group_id': group_id})['id']
  275.                     vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  276.                                                                 'message': "Альбомы созданы",
  277.                                                                 'random_id': 0})
  278.  
  279.                 elif "назад" in event.object.message['text'].lower() \
  280.                      or ("Загрузить долг!" in event.object.message['text']) \
  281.                      or ("Загрузить работу" in event.object.message['text']) or ( "Правила" in event.object.message['text']) \
  282.                      or ("Загрузить на батл" in event.object.message['text']) \
  283.                      or ("Статистика дня" in event.object.message['text']) \
  284.                      or ("Статистика общая" in event.object.message['text']) \
  285.                      or ("Загрузить за кого-то" in event.object.message['text']) \
  286.                      or ("начать" in event.object.message['text'].lower())\
  287.                      or ("начать_староста" in event.object.message['text'].lower()):
  288.                     return event
  289.     def photo(body,user_id, url, group_id, album_id):
  290.         file = wget.download(url)
  291.         upload_url = vk_photo.method('photos.getUploadServer', {'group_id': group_id, 'album_id':
  292.  
  293.             album_id})['upload_url']
  294.         info = requests.post(upload_url, files={'photo': open(file, 'rb')}).json()
  295.         t=vk_photo.method('photos.save',
  296.                         {'server': info['server'], 'photos_list': info['photos_list'], 'aid': info['aid'],
  297.                          'hash': info['hash'], 'group_id': group_id, 'album_id': album_id, 'caption': body})
  298.         os.remove(file)
  299.         return t
  300.     def daylik(vk,keyboard,album_id,dd=False):
  301.         longpoll = VkBotLongPoll(vk, group_id)
  302.         for event in longpoll.listen():
  303.             if event.type == VkBotEventType.MESSAGE_NEW:
  304.  
  305.                 if event.object.message['attachments']:
  306.                     if event.object.message['attachments'][0]['type'] == 'photo':  # photo
  307.                         url = event.object.message['attachments'][0]['photo']['sizes'][6]['url']
  308.                         messages = vk_message.method("messages.getConversations",
  309.                                                      {'offset': 0, 'count': 20, 'filter': 'unread'})
  310.                         file = wget.download(url)
  311.                         id = event.object.message['from_id']
  312.                         body = event.object.message['text']
  313.                         al=list(filter(lambda x: int(x[1]) == event.object.message['from_id'],userT))[0][7]
  314.                         if dd==False:
  315.                             k=photo(body,id, url, group_id, album_id[al])
  316.                         else:
  317.                             try:
  318.                                 body=int(body)
  319.                             except ValueError:
  320.                                 vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  321.                                                                     'message': "ошибка",
  322.                                                                     'random_id': 0})
  323.                                 continue
  324.                             k=photo(body,body, url, group_id, album_id[al])
  325.                         if flag2 == 0:
  326.                             getpicture(event.object.message['from_id'] if not dd else body, 2, False,apib,spreadsheetid)
  327.                             vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  328.                                                                 'message': "Отлично, работа принята!",
  329.                                                                 'random_id': 0})
  330.                         if flag2 == 1:
  331.                             getpicture(event.object.message['from_id'] if not dd else body, 1, False,apib,spreadsheetid)
  332.                             vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  333.                                                                 'message': "Отлично, работа принята! Не опаздывай больше)",
  334.                                                                 'random_id': 0})
  335.                             vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  336.                                                                 'message': f"https://vk.com/album-{group_id}_{album_id[al]}" ,
  337.                                                                 'random_id': 0})
  338.                         if flag2 == 2:
  339.                             getpicture(event.object.message['from_id'] if not dd else body, 0, False,apib,spreadsheetid)
  340.                         os.remove(file)
  341.                         for i in range(1,len(event.object.message['attachments'])):
  342.                             vk_photo.method('photos.createComment',
  343.                                             {'owner_id':-group_id,'photo_id':k[0]['id'], "attachments": f'photo{id}_{event.object.message["attachments"][i]["photo"]["id"]}'})
  344.                             # vk_photo.method('photos.createComment',
  345.                             #                                  {'owner_id':-group_id,'photo_id':k[0]['id'], "message": "Это кот " }) # комментарии
  346.  
  347.  
  348.  
  349.                         return event
  350.                 elif "назад" in event.object.message['text'].lower()  \
  351.                         or ("Загрузить долг!" in event.object.message['text']) \
  352.                         or ("Загрузить работу" in event.object.message['text']) or ("Правила" in event.object.message['text']) \
  353.                         or ("Загрузить на батл" in event.object.message['text'])\
  354.                         or ("Статистика дня" in event.object.message['text'])\
  355.                         or ("Статистика общая" in event.object.message['text']) \
  356.                         or ("Загрузить за кого-то" in event.object.message['text']) \
  357.                         or ("начать" in event.object.message['text'].lower()) \
  358.                         or ("начать_староста" in event.object.message['text'].lower()):
  359.  
  360.                     return event
  361.     def debt_daylik(vk,keyboard):
  362.         longpoll = VkBotLongPoll(vk, group_id)
  363.         for event in longpoll.listen():
  364.             if event.type == VkBotEventType.MESSAGE_NEW:
  365.  
  366.                if event.object.message['attachments']:
  367.                     if event.object.message['attachments'][0]['type'] == 'photo':  # photo
  368.                         vk_message.method('messages.getConversations',
  369.                                           {"user_id": event.object.message['from_id'],
  370.                                            'message': "",
  371.                                            'attachment': 'photo-191561475_457239022',
  372.                                            'random_id': 0})
  373.                         url = event.object.message['attachments'][0]['photo']['sizes'][6]['url']
  374.                         messages = vk_message.method("messages.getConversations",
  375.                                                      {'offset': 0, 'count': 20, 'filter': 'unread'})
  376.                         id = event.object.message['from_id']
  377.                         body = event.object.message['text']
  378.                         al = list(filter(lambda x: int(x[1]) == event.object.message['from_id'], userT))[0][7]
  379.                         k = photo(body, id, url, group_id, album_id[al])
  380.                         getpicture(event.object.message['from_id'], 0.5, True,apib,spreadsheetid)
  381.                         vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  382.                                                             'message': "Отлично, долг принят!",
  383.                                                             'random_id': 0})
  384.                     return event
  385.                elif "назад" in event.object.message['text'].lower() \
  386.                       or ("Загрузить долг!" in event.object.message['text']) \
  387.                       or ("Загрузить работу" in event.object.message['text']) or ("Правила" in event.object.message['text']) \
  388.                       or ("Загрузить на батл" in event.object.message['text']) \
  389.                       or ("Статистика дня" in event.object.message['text']) \
  390.                       or ("Статистика общая" in event.object.message['text']) \
  391.                       or ("Загрузить за кого-то" in event.object.message['text']) \
  392.                       or ("начать" in event.object.message['text'].lower())\
  393.                       or ("начать_староста" in event.object.message['text'].lower()):
  394.                    return event
  395.  
  396.  
  397.     def daylik_competition(vk, keyboard):
  398.         longpoll = VkBotLongPoll(vk, group_id)
  399.         for event in longpoll.listen():
  400.             if event.type == VkBotEventType.MESSAGE_NEW:
  401.  
  402.                 if event.object.message['attachments']:
  403.                     if event.object.message['attachments'][0]['type'] == 'photo':  # photo
  404.                         vk_message.method('messages.getConversations',
  405.                                           {"user_id": event.object.message['from_id'],  # выведет ок если пришло фото
  406.                                            'message': "",
  407.  
  408.                                            'random_id': 0})
  409.                         url = event.object.message['attachments'][0]['photo']['sizes'][6]['url']
  410.                         messages = vk_message.method("messages.getConversations",
  411.                                                      {'offset': 0, 'count': 20, 'filter': 'unread'})
  412.                         id = event.object.message['from_id']  # id отправителя
  413.                         body = event.object.message['text']  # сам текст
  414.                         if is_in_Competition==True: # TODO
  415.                             k = photo(body, id, url, group_id, album_challenge_id)
  416.                             getpicture(event.object.message['from_id'], 0, 2, apib, spreadsheetid)
  417.                             vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  418.                                                                 'message': "Отлично, работа принята!",
  419.                                                                 'random_id': 0})
  420.                             for i in range(1, len(event.object.message['attachments'])):
  421.                                 vk_photo.method('photos.createComment',
  422.                                                 {'owner_id': -group_id, 'photo_id': k[0]['id'],
  423.                                                  "attachments": f'photo{id}_{event.object.message["attachments"][i]["photo"]["id"]}'})
  424.                     return event
  425.                 elif "назад" in event.object.message['text'].lower() \
  426.                         or ("Загрузить долг!" in event.object.message['text']) \
  427.                         or ("Загрузить работу" in event.object.message['text']) or ( "Правила" in event.object.message['text']) \
  428.                         or ("Загрузить на батл" in event.object.message['text']) \
  429.                         or ("Статистика дня" in event.object.message['text']) \
  430.                         or ("Статистика общая" in event.object.message['text']) \
  431.                         or ("Загрузить за кого-то" in event.object.message['text']) \
  432.                         or ("начать" in event.object.message['text'].lower()) \
  433.                         or ("начать_староста" in event.object.message['text']).lower():
  434.                     return event
  435.  
  436.  
  437.     longpoll = VkBotLongPoll(vk_message, group_id) #событие, наблюдаем за некоторой событийной модель
  438.     tmp = type('vk', (), {'object': type('mes', (), {'message': {'user_id': 0, 'id': 0}})})
  439.     while True:
  440.         try:
  441.             # flag2 = 0
  442.             for event in longpoll.listen():
  443.  
  444.                 if event.type == VkBotEventType.MESSAGE_NEW:
  445.  
  446.                     if True: #user_in_base(event.object.message['from_id'], apib, spreadsheetid)
  447.  
  448.                         if event.object.message['text'].lower() == 'начать':# обратились к сообщению, образаемся к "тексту"
  449.                             a = vk_message.method('users.get', {'user_ids': event.object.message['from_id']})
  450.                             a = a[0]['first_name']
  451.                             vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  452.                                                                 'message': 'Привет, друг ' + str(a),
  453.                                                                 'random_id': 0})
  454.                             vk_message.method("messages.send", {"user_id": event.object.message['from_id'],
  455.                                                         'message': ' Нажми на кнопку или напиши необходимую команду,если кнопки не работают \n 0.Правила. \n 1. Загрузить работу.\n 2.Загрузить долг!.\n 3. Загрузить на батл',
  456.                                                         'random_id': 0, 'keyboard': keyboard})
  457.                         elif ("Загрузить работу" in event.object.message['text']) or ("1" in event.object.message['text']):## Как сделать так,чтобы бот передавал комментарий к рисунку вместе с рисуноком
  458.                              if Data(event.object.message['from_id'],apib,spreadsheetid)==day_t():
  459.                                  vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  460.                                                                      'message': "Вы уже сдавали работу! Ждём вас завтра!",
  461.                                                                      'random_id': 0})
  462.                              else:
  463.  
  464.                                 vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  465.                                                          'message': "Загружай!",
  466.                                                          'random_id': 0})
  467.  
  468.                                 tmp = daylik(vk_message, keyboard, album_id)
  469.                         elif ("Загрузить долг!" in event.object.message['text']) or ("2" in event.object.message['text']):  # если нажать на кнопку, то проиходйет это
  470.                             if Debt(event.object.message['from_id'],apib,spreadsheetid) <= 0:
  471.                                 vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  472.                                                                     'message': "Вы сдали все долги!",
  473.                                                                     'random_id': 0})
  474.  
  475.                             else:
  476.                                 vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  477.                                                                     'message': "Загружайте долг",
  478.                                                                     'random_id': 0})
  479.                                 tmp = debt_daylik(vk_message,keyboard)
  480.                         elif ("Загрузить на батл" in event.object.message['text']) or ("3" in event.object.message['text']):
  481.                             if is_in_Competition == True:
  482.                                 vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  483.                                                          'message': "Загружай на батл",
  484.                                                          'random_id': 0})
  485.  
  486.                                 tmp=daylik_competition(vk_message,keyboard)
  487.                             else:
  488.                                 vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  489.                                                                     'message': "Конкурс ещё не начался, следите за объявлениями в группе",
  490.                                                                     'random_id': 0})
  491.                         elif ("Правила" in event.object.message['text']) or ("0" in event.object.message['text']):  # НЕ ГОТОВО
  492.                                 vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  493.                                                                     'message': "https://vk.com/public191601892?w=wall-191601892_2", # тут правила
  494.                                                                     'random_id': 0})
  495.                         elif event.object.message['text'].lower() == 'начать_староста':
  496.                             a = vk_message.method('users.get', {'user_ids': event.object.message['from_id']})
  497.                             a = a[0]['first_name']
  498.                             vk_message.method("messages.send", {"user_id": event.object.message['from_id'],
  499.                                                                 'message': 'Привет, староста  '+str(a),
  500.                                                                 'random_id': 0, 'keyboard': keyboard_Leader})
  501.                             Leader(vk_message,keyboard_Leader)
  502.                         elif event.object.message['text'].lower() == 'начать_админ':
  503.                             a = vk_message.method('users.get', {'user_ids': event.object.message['from_id']})
  504.                             a = a[0]['first_name']
  505.                             vk_message.method("messages.send", {"user_id": event.object.message['from_id'],
  506.                                                                 'message': 'Привет, администратор  '+str(a),
  507.                                                                 'random_id': 0, 'keyboard': keyboard_Admin})
  508.                             Admin(vk_message,keyboard_Admin)
  509.                         else:
  510.                             if not ((tmp.object.message['user_id'] == event.object.message['from_id']) and (tmp.object.message['id'] == event.object.message['id'])):
  511.                                 if event.object.message['attachments']:
  512.                                     vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  513.                                                                         'message': ' Нажми на кнопку или напиши необходимую команду,если кнопки не работают \n 0.Правила. \n 1. Загрузить работу.\n 2.Загрузить долг!.\n 3. Загрузить на батл',
  514.                                                                         'random_id': 0})
  515.                                 else:
  516.                                     vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  517.                                                                         'message': "Напечатай слово <начать>,чтобы приступить к работе",
  518.                                                                         'random_id': 0})
  519.                     else:
  520.                         vk_message.method('messages.send', {"user_id": event.object.message['from_id'],
  521.                                                             'message': "Вы  были исключены из дейликов",
  522.                                                             'random_id': 0})
  523.         except ReadTimeout: time.sleep(10)
Advertisement
Add Comment
Please, Sign In to add comment