Advertisement
kesha1225

Untitled

Sep 5th, 2019
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 46.11 KB | None | 0 0
  1. import vk_api
  2. from vk_api.longpoll import VkLongPoll, VkEventType
  3. import random
  4. import helper
  5. import pickle
  6. import urllib.request
  7. import json
  8. import logging
  9. import traceback
  10. import requests
  11. import time
  12.  
  13.  
  14. def captcha_handler(captcha):
  15.     key = input("Enter captcha code {0}: ".format(captcha.get_url())).strip()
  16.  
  17.     # Пробуем снова отправить запрос с капчей
  18.     return captcha.try_again(key)
  19.  
  20.  
  21. logging.basicConfig(format=u'%(filename)s[LINE:%(lineno)d]# %(levelname)-8s [%(asctime)s]  %(message)s',
  22.                     level=logging.INFO, filename='log.txt')
  23. token = ''
  24. vk = vk_api.VkApi(token=token, captcha_handler=captcha_handler)
  25. vk._auth_token()
  26. session_api = vk.get_api()
  27. longpoll = VkLongPoll(vk)
  28. folder_id = "b1gtmceh9mu4d7rinqna"
  29. api_key = 'AQVNxJyscrPugartSif4BMcFGtZdy0M9hXJ4Frwt'
  30. url_yandex = 'https://tts.api.cloud.yandex.net/speech/v1/tts:synthesize'
  31. headers = {
  32.     'Authorization': 'Api-Key ' + api_key,
  33. }
  34.  
  35.  
  36. def create_admins_list(event):
  37.     chat_id = event.chat_id
  38.     admin = [547098395]
  39.     chat = vk.method('messages.getChat', {'chat_id': chat_id, 'fields': 'online'})
  40.     admin.append(chat['admin_id'])
  41.     return admin
  42.  
  43.  
  44. def get_msg_info(event):
  45.     message_id = event.message_id
  46.     message_info = vk.method('messages.getById', {'message_ids': message_id})
  47.     return message_info
  48.  
  49.  
  50. def mute(event):
  51.     chat_id = event.chat_id
  52.     admin = create_admins_list(event)
  53.     if event.user_id in admin:
  54.         try:
  55.             message_info = get_msg_info(event)
  56.             logging.info('Получена команда !мут')
  57.             with open('mutbase.txt', 'rb') as mutbase:
  58.                 mut_list = pickle.load(mutbase)
  59.             try:
  60.                 muted_id = message_info['items'][0]['reply_message']['from_id']
  61.             except KeyError:
  62.                 muted_id = message_info['items'][0]['fwd_messages'][0]['from_id']
  63.             if muted_id in admin:
  64.                 vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  65.                                             "message": 'нельзя мутить админов (или бота)',
  66.                                             "random_id": str(random.randint(1, 1000000000))})
  67.             else:
  68.                 mut_list.append(muted_id)
  69.                 user_info = vk.method('users.get', {'user_ids': muted_id, 'fields': 'sex'})
  70.                 if user_info[0]['sex'] == 1:
  71.                     mute_message = f"замутили @id{muted_id}(девку)........"
  72.                 else:
  73.                     mute_message = f"замутили @id{muted_id}(пацана)........"
  74.                 vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  75.                                             "message": mute_message,
  76.                                             "random_id": str(random.randint(1, 1000000000))})
  77.                 with open('mutbase.txt', 'wb') as mutbase:
  78.                     pickle.dump(mut_list, mutbase)
  79.         except IndexError:
  80.             vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  81.                                         "message": 'а каво мне мутить ты не подумал??? уебок',
  82.                                         "random_id": str(random.randint(1, 1000000000))})
  83.     else:
  84.         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  85.                                     "message": 'долабеб ты че творишь (вариант 1 - ты не админ, '
  86.                                                'вариант 2 - ты хочешь замутить бота, вариант 3 - '
  87.                                                'пошёл нахуй',
  88.                                     "random_id": str(random.randint(1, 1000000000))})
  89.  
  90.  
  91. def unmute(event):
  92.     chat_id = event.chat_id
  93.     logging.info('Получена команда !размут')
  94.     admin = create_admins_list(event)
  95.     if event.user_id in admin:
  96.         try:
  97.             message_info = get_msg_info(event)
  98.             with open('mutbase.txt', 'rb') as mutbase:
  99.                 mut_list = pickle.load(mutbase)
  100.             try:
  101.                 unmuted_id = message_info['items'][0]['reply_message']['from_id']
  102.             except KeyError:
  103.                 unmuted_id = message_info['items'][0]['fwd_messages'][0]['from_id']
  104.             for number, mut_id in enumerate(mut_list):
  105.                 if mut_id == unmuted_id:
  106.                     mut_list.pop(number)
  107.                     user_info = vk.method('users.get', {'user_ids': unmuted_id, 'fields': 'sex'})
  108.                     if user_info[0]['sex'] == 1:
  109.                         unmute_message = f"размутили @id{unmuted_id}(девку)........"
  110.                     else:
  111.                         unmute_message = f"размутили @id{unmuted_id}(пацана)........"
  112.                     vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  113.                                                 "message": unmute_message,
  114.                                                 "random_id": str(random.randint(1, 1000000000))})
  115.                     with open('mutbase.txt', 'wb') as mutbase:
  116.                         pickle.dump(mut_list, mutbase)
  117.         except IndexError:
  118.             vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  119.                                         "message": 'кого размут сука??? кого блять??????',
  120.                                         "random_id": str(random.randint(1, 1000000000))})
  121.     else:
  122.         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  123.                                     "message": 'ток админы могут hfpve блять размутить',
  124.                                     "random_id": str(random.randint(1, 1000000000))})
  125.  
  126.  
  127. def ban(event):
  128.     chat_id = event.chat_id
  129.     logging.info('Получена команда !бан')
  130.     admin = create_admins_list(event)
  131.     if event.user_id in admin:
  132.         message_info = get_msg_info(event)
  133.         ban_id = message_info['items'][0]['reply_message']['from_id']
  134.         if ban_id in admin:
  135.             vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  136.                                         "message": 'нельзя cyka',
  137.                                         "random_id": str(random.randint(1, 1000000000))})
  138.         else:
  139.             try:
  140.                 user_info = vk.method('users.get', {'user_ids': ban_id, 'fields': 'sex'})
  141.                 if user_info[0]['sex'] == 1:
  142.                     ban_message = 'убили фраер_ессу суки'
  143.                 else:
  144.                     ban_message = 'убили фраера суки'
  145.                 vk.method('messages.removeChatUser', {'chat_id': chat_id, 'member_id': ban_id})
  146.                 vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  147.                                             "message": ban_message,
  148.                                             'attachment': 'audio2000210783_389984836',
  149.                                             "random_id": str(random.randint(1, 1000000000))})
  150.                 logging.info('Забанен' + str(ban_id))
  151.             except vk_api.exceptions.ApiError:
  152.                 vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  153.                                             "message": 'блять че ты делаешь так нельзя',
  154.                                             "random_id": str(random.randint(1, 1000000000))})
  155.  
  156.             except KeyError:
  157.                 vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  158.                                             "message": 'каво банить не слишу',
  159.                                             "random_id": str(random.randint(1, 1000000000))})
  160.     else:
  161.         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  162.                                     "message": 'блять че ты делаешь так нельзя',
  163.                                     "random_id": str(random.randint(1, 1000000000))})
  164.  
  165.  
  166. def humor(event):
  167.     chat_id = event.chat_id
  168.     logging.info('Получена команда !юмореска')
  169.     try:
  170.         text = helper.get_text()
  171.         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  172.                                     "message": text,
  173.                                     "random_id": str(random.randint(1, 1000000000))})
  174.     except vk_api.exceptions.ApiError:
  175.         text = helper.get_random_error_humor()
  176.         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  177.                                     "message": text,
  178.                                     "random_id": str(random.randint(1, 1000000000))})
  179.  
  180.  
  181. def samoban(event):
  182.     chat_id = event.chat_id
  183.     logging.info('Получена команда !самобан')
  184.     message_info = get_msg_info(event)
  185.     chance = random.randint(1, 1000)
  186.     if chance == 1000:
  187.         try:
  188.             ban_id = message_info['items'][0]['from_id']
  189.             vk.method('messages.removeChatUser', {'chat_id': chat_id, 'member_id': ban_id})
  190.             vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  191.                                         "message": 'ОН СДЕЛАЛ ХАРАКИРИ У ВАС НА ГЛАЗАХ',
  192.                                         "random_id": str(random.randint(1, 1000000000))})
  193.         except vk_api.exceptions.ApiError:
  194.             vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  195.                                         "message": 'Поздравляю, тебе выпало 1000, но тебя нельзя кикнуть,'
  196.                                                    ' так что пошел нахуй ок?',
  197.                                         "random_id": str(random.randint(1, 1000000000))})
  198.     else:
  199.         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  200.                                     "message": (f'Выпало {chance}, еще один день без самобана.....'),
  201.                                     "random_id": str(random.randint(1, 1000000000))})
  202.  
  203.  
  204. def warn(event):
  205.     chat_id = event.chat_id
  206.     logging.info('Получена команда !варн')
  207.     admin = create_admins_list(event)
  208.     if event.user_id in admin:
  209.         message_info = get_msg_info(event)
  210.         try:
  211.             with open('database.txt', 'rb') as inp:
  212.                 warns = pickle.load(inp)
  213.             try:
  214.                 warn_id = message_info['items'][0]['reply_message']['from_id']
  215.             except KeyError:
  216.                 warn_id = message_info['items'][0]['fwd_messages'][0]['from_id']
  217.             if warn_id in admin:
  218.                 vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  219.                                             "message": 'нельзя дать варн админу',
  220.                                             "random_id": str(random.randint(1, 1000000000))})
  221.             else:
  222.  
  223.                 user_info = vk.method('users.get', {'user_ids': warn_id, 'fields': 'sex'})
  224.                 user_name = user_info[0]['first_name']
  225.                 user_lastname = user_info[0]['last_name']
  226.                 try:
  227.                     warns[warn_id] += 1
  228.                 except KeyError:
  229.                     warns[warn_id] = 0
  230.                     warns[warn_id] += 1
  231.                 with open('database.txt', 'wb') as out:
  232.                     pickle.dump(warns, out)
  233.                 if warns[warn_id] >= 4:
  234.                     try:
  235.                         if user_info[0]['sex'] == 1:
  236.                             message_ban = 'убили фраер_ессу суки'
  237.                         else:
  238.                             message_ban = 'убили фраера суки'
  239.                         ban_id = warn_id
  240.                         vk.method('messages.removeChatUser', {'chat_id': chat_id, 'member_id': ban_id})
  241.                         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  242.                                                     "message": message_ban,
  243.                                                     'attachment': 'audio2000210783_389984836',
  244.                                                     "random_id": str(random.randint(1, 1000000000))})
  245.                         warns[warn_id] = 0
  246.                     except vk_api.exceptions.ApiError:
  247.                         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  248.                                                     "message": 'блять че ты делаешь так нельзя',
  249.                                                     "random_id": str(random.randint(1, 1000000000))})
  250.                 else:
  251.                     if user_info[0]['sex'] == 1:
  252.                         message_warn = f"@id{warn_id}({user_name} {user_lastname}) получила варн, теперь их" \
  253.                             f" [{warns[warn_id]} из 4]"
  254.                     else:
  255.                         message_warn = f"@id{warn_id}({user_name} {user_lastname}) получил варн, теперь их" \
  256.                             f" [{warns[warn_id]} из 4]"
  257.                     vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  258.                                                 "message":  message_warn,
  259.                                                 "random_id": str(random.randint(1, 1000000000))})
  260.                 with open('database.txt', 'wb') as out:
  261.                     pickle.dump(warns, out)
  262.         except IndexError:
  263.             vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  264.                                         "message": 'а кому варн то блять?',
  265.                                         "random_id": str(random.randint(1, 1000000000))})
  266.     else:
  267.         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  268.                                     "message": 'варны выдают ток админы',
  269.                                     "random_id": str(random.randint(1, 1000000000))})
  270.  
  271.  
  272. def unwarn(event):
  273.     chat_id = event.chat_id
  274.     logging.info('Получена команда !анварн')
  275.     try:
  276.         message_info = get_msg_info(event)
  277.         admin = create_admins_list(event)
  278.         with open('database.txt', 'rb') as inp:
  279.             warns = pickle.load(inp)
  280.         try:
  281.             warn_id = message_info['items'][0]['reply_message']['from_id']
  282.         except KeyError:
  283.             warn_id = message_info['items'][0]['fwd_messages'][0]['from_id']
  284.         if warn_id in admin:
  285.             vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  286.                                         "message": 'админам похуй у них нет варнов',
  287.                                         "random_id": str(random.randint(1, 1000000000))})
  288.         else:
  289.             user_info = vk.method('users.get', {'user_ids': warn_id, 'fields': 'sex'})
  290.             user_name = user_info[0]['first_name']
  291.             user_lastname = user_info[0]['last_name']
  292.             if warns[warn_id] <= 0:
  293.                 vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  294.                                             "message": f'@id{warn_id} ({user_name} {user_lastname})'
  295.                                             f' и так без варнов, куда дальше то',
  296.                                             "random_id": str(random.randint(1, 1000000000))})
  297.             else:
  298.                 try:
  299.                     warns[warn_id] -= 1
  300.                 except KeyError:
  301.                     warns[warn_id] = 0
  302.                 with open('database.txt', 'wb') as out:
  303.                     pickle.dump(warns, out)
  304.                 if warns[warn_id] == 0:
  305.                     if user_info[0]['sex'] == 1:
  306.                         message_0 = f'@id{warn_id} ({user_name} {user_lastname}) поздравляю, ты свободная женщина без варнов'
  307.                     else:
  308.                         message_0 = f'@id{warn_id} ({user_name} {user_lastname}) поздравляю, ты свободный человек без варнов'
  309.                     vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  310.                                                 "message": message_0,
  311.                                                 "random_id": str(random.randint(1, 1000000000))})
  312.                     logging.info(f'{user_name} {user_lastname} теперь без варнов')
  313.                 else:
  314.                     vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  315.                                                 "message": (f"@id{warn_id}({user_name}"
  316.                                                             f" {user_lastname}) у тебя минус варн,"
  317.                                                             f" теперь их [{warns[warn_id]} из 4]"),
  318.                                                 "random_id": str(random.randint(1, 1000000000))})
  319.     except IndexError:
  320.         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  321.                                     "message": 'что анварн? что ты этим хотел сказать, уебок',
  322.                                     "random_id": str(random.randint(1, 1000000000))})
  323.  
  324.  
  325. def full_anwarn(event):
  326.     chat_id = event.chat_id
  327.     logging.info('Получена команда !фуланварн')
  328.     try:
  329.         message_info = get_msg_info(event)
  330.         admin = create_admins_list(event)
  331.         with open('database.txt', 'rb') as inp:
  332.             warns = pickle.load(inp)
  333.         try:
  334.             warn_id = message_info['items'][0]['reply_message']['from_id']
  335.         except KeyError:
  336.             warn_id = message_info['items'][0]['fwd_messages'][0]['from_id']
  337.         if warn_id in admin:
  338.             vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  339.                                         "message": 'админам похуй у них нет варнов',
  340.                                         "random_id": str(random.randint(1, 1000000000))})
  341.         else:
  342.             user_info = vk.method('users.get', {'user_ids': warn_id, 'fields': 'sex'})
  343.             user_name = user_info[0]['first_name']
  344.             user_lastname = user_info[0]['last_name']
  345.             if user_info[0]['sex'] == 1:
  346.                 message = f'опа нахуй @id{warn_id}({user_name} {user_lastname}) свободна'
  347.             else:
  348.                 message = f'опа нахуй @id{warn_id}({user_name} {user_lastname}) свободен'
  349.             warns[warn_id] = 0
  350.             with open('database.txt', 'wb') as out:
  351.                 pickle.dump(warns, out)
  352.                 vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  353.                                             "message": message,
  354.                                             "random_id": str(random.randint(1, 1000000000))})
  355.     except IndexError:
  356.         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  357.                                     "message": 'эм и че где пересланное сообщение',
  358.                                     "random_id": str(random.randint(1, 1000000000))})
  359.  
  360.  
  361. def info(event):
  362.     chat_id = event.chat_id
  363.     logging.info('Получена команда !инфо')
  364.     message_info = get_msg_info(event)
  365.     try:
  366.         admin = create_admins_list(event)
  367.         try:
  368.             info_id = message_info['items'][0]['reply_message']['from_id']
  369.         except KeyError:
  370.             info_id = message_info['items'][0]['fwd_messages'][0]['from_id']
  371.         if info_id in admin:
  372.             vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  373.                                         "message": 'админам похуй у них нет варнов',
  374.                                         "random_id": str(random.randint(1, 1000000000))})
  375.         else:
  376.             user_info = vk.method('users.get', {'user_ids': info_id})
  377.             user_name = user_info[0]['first_name']
  378.             user_lastname = user_info[0]['last_name']
  379.             with open('database.txt', 'rb') as inp:
  380.                 warns = pickle.load(inp)
  381.             vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  382.                                         "message": (f"у {user_name}"
  383.                                                     f" {user_lastname} [{warns[info_id]} из 4] варнов"),
  384.                                         "random_id": str(random.randint(1, 1000000000))})
  385.     except IndexError:
  386.         info_id = message_info['items'][0]['from_id']
  387.         admin = create_admins_list(event)
  388.         if info_id in admin:
  389.             vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  390.                                         "message": 'админам похуй у них нет варнов',
  391.                                         "random_id": str(random.randint(1, 1000000000))})
  392.         else:
  393.             user_info = vk.method('users.get', {'user_ids': info_id})
  394.             user_name = user_info[0]['first_name']
  395.             user_lastname = user_info[0]['last_name']
  396.             with open('database.txt', 'rb') as inp:
  397.                 warns = pickle.load(inp)
  398.             vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  399.                                         "message": (f"у {user_name}"
  400.                                                     f" {user_lastname} [{warns[info_id]} из 4] варнов"),
  401.                                         "random_id": str(random.randint(1, 1000000000))})
  402.  
  403.  
  404. def info_bot(event):
  405.     chat_id = event.chat_id
  406.     logging.info('Получена команда !справка')
  407.     vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  408.                                 "message": '!мут - мутит\n!бан - банит\n!самобан - самобанит'
  409.                                            '\n!юмореска - юмореска\n!варн - варн (4 варна - бан)'
  410.                                            '\n!инфо - инфа о варнах\n!гс вкл/выкл - включает или выключает'
  411.                                            ' распознавание голосовых\n!трек - трек\n!код - выполнить пайтон код\n'
  412.                                            '!сбор - сбор всех участников конфы по гиперам\n!скажи - озвучить ваш текст'
  413.                                            '\n!лозунг - озвучить ваш текст но как будто это говорит ленин_есса на'
  414.                                            'броневике\n!спой летова - поет летова хули\n!анек - рассказывает анек\n'
  415.                                            'Команды можно использовать голосом, с помощью голосового сообщения',
  416.  
  417.                                 "random_id": str(random.randint(1, 1000000000))})
  418.  
  419.  
  420. def full_info(event):
  421.     chat_id = event.chat_id
  422.     logging.info('Получена команда !фулинфо')
  423.     all_info = []
  424.     with open('database.txt', 'rb') as inp:
  425.         warns = pickle.load(inp)
  426.     for i in sorted(warns.keys()):
  427.         user_info = vk.method('users.get', {'user_ids': i})
  428.         user_name = user_info[0]['first_name']
  429.         user_lastname = user_info[0]['last_name']
  430.         message = f"{user_name} {user_lastname} - [{warns[i]} из 4] варнов"
  431.         all_info.append(message)
  432.     bot_message = ''
  433.     for inf_num, inf in enumerate(all_info):
  434.         bot_message += all_info[inf_num] + '\n'
  435.     vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  436.                                 "message": bot_message,
  437.                                 "random_id": str(random.randint(1, 1000000000))})
  438.  
  439.  
  440. def test(event):
  441.     chat_id = event.chat_id
  442.     logging.info('Получена команда !тест')
  443.     answers_list = ['Все ещё достоин', 'Пока не остыл', 'Ещё жив', 'Живой', 'Готов к труду и обороне',
  444.                     'Скайнет на месте', 'Пошел нахуй', 'Who call the dragon knight?',
  445.                     'блять до крови прищемил добровольные пальцы', '42', 'что', 'пажилой бот слушает',
  446.                     'кручу код по кругу', 'проверяю условия', 'кирюша не тупи ты ближе подойди.....',
  447.                     '>пук\n>среньк', 'бот 12 лет пошлый']
  448.     answer = random.choice(answers_list)
  449.  
  450.     vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  451.                                 "message": answer,
  452.                                 "random_id": str(random.randint(1, 1000000000))})
  453.  
  454.  
  455. def track(event):
  456.     chat_id = event.chat_id
  457.     logging.info('Получена команда !трек')
  458.     if event.user_id == 436338702:
  459.         track = helper.raf_music()
  460.         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  461.                                     "message": '',
  462.                                     'attachment': track,
  463.                                     "random_id": str(random.randint(1, 1000000000))})
  464.     else:
  465.         track = helper.random_letov()
  466.         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  467.                                     "message": '',
  468.                                     'attachment': track,
  469.                                     "random_id": str(random.randint(1, 1000000000))})
  470.  
  471.  
  472. def code(event):
  473.     import math
  474.     chat_id = event.chat_id
  475.     ms_info = get_msg_info(event)
  476.     if ms_info['items'][0]['from_id'] == 431631325:
  477.         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  478.                                     "message": 'хаха у бойцова бан',
  479.                                     "random_id": str(random.randint(1, 1000000000))})
  480.     else:
  481.         logging.info('Получена команда !код')
  482.         try:
  483.             code_raw = ms_info['items'][0]['text']
  484.             code = eval(code_raw[5:])
  485.             vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  486.                                         "message": code,
  487.                                         "random_id": str(random.randint(1, 1000000000))})
  488.         except Exception as e:  # тут из за евала может случиться сто миллионов ошибок
  489.             vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  490.                                         "message": 'Ошибка блять! ' + str(e),
  491.                                         "random_id": str(random.randint(1, 1000000000))})
  492.  
  493.  
  494. def audio_to_text():
  495.     folder_id = "b1gtmceh9mu4d7rinqna"  # Идентификатор каталога
  496.     api_key = 'AQVNxJyscrPugartSif4BMcFGtZdy0M9hXJ4Frwt'
  497.     with open("audio.ogg", "rb") as f:
  498.         data = f.read()
  499.  
  500.     params = "&".join([
  501.         "topic=general",
  502.         "folderId=%s" % folder_id,
  503.         "lang=ru-RU"
  504.     ])
  505.  
  506.     url = urllib.request.Request("https://stt.api.cloud.yandex.net/speech/v1/stt:recognize?%s" % params, data=data)
  507.     url.add_header("Authorization", "Api-Key %s" % api_key)
  508.     responseData = urllib.request.urlopen(url).read().decode('UTF-8')
  509.     try:
  510.         decodedData = json.loads(responseData)
  511.     except:
  512.         return
  513.     if decodedData.get("error_code") is None:
  514.         result = decodedData.get("result")
  515.     else:
  516.         result = decodedData.get("error_code")
  517.     return result
  518.  
  519.  
  520. def audio_helper(text_from_audio, chat_id, user_name, user_lastname):
  521.     if text_from_audio != '':
  522.  
  523.         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  524.                                     "message": (f'{user_name} {user_lastname} '
  525.                                                 f'сказал:\n\n'
  526.                                                 f'{text_from_audio}'),
  527.                                     "random_id": str(random.randint(1, 1000000000))})
  528.     else:
  529.         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  530.                                     "message": (f'{user_name} {user_lastname}'
  531.                                                 f' отправил голосовое и ничего не сказал, лол'),
  532.                                     "random_id": str(random.randint(1, 1000000000))})
  533.  
  534.  
  535. def audio_check(event):
  536.     message_info = get_msg_info(event)
  537.     user_id = event.user_id
  538.     if user_id == 547098395:
  539.         pass
  540.     else:
  541.         audio = message_info['items'][0]['attachments'][0]['audio_message']['link_ogg']
  542.         urllib.request.urlretrieve(audio, "audio.ogg")
  543.         text_from_audio = audio_to_text()
  544.         return text_from_audio
  545.  
  546.  
  547. def audio_norm(event):
  548.     chat_id = event.chat_id
  549.     message_info = get_msg_info(event)
  550.     user_id = event.user_id
  551.     if user_id == 547098395:
  552.         pass
  553.     else:
  554.         audio = message_info['items'][0]['attachments'][0]['audio_message']['link_ogg']
  555.         urllib.request.urlretrieve(audio, "audio.ogg")
  556.         text_from_audio = audio_to_text()
  557.         user_info = vk.method('users.get', {'user_ids': user_id})
  558.         user_name = user_info[0]['first_name']
  559.         user_lastname = user_info[0]['last_name']
  560.         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  561.                                     "message": f'{user_name} {user_lastname} сказал:\n\n{text_from_audio}',
  562.                                     "random_id": str(random.randint(1, 1000000000))})
  563.         return text_from_audio, user_name, user_lastname
  564.  
  565.  
  566. def audio_fwd(event):
  567.     chat_id = event.chat_id
  568.     message_info = get_msg_info(event)
  569.     audio = message_info['items'][0]['fwd_messages'][0]['attachments'][0]['audio_message']['link_ogg']
  570.     urllib.request.urlretrieve(audio, "audio.ogg")
  571.     text_from_audio = audio_to_text()
  572.     user_id = message_info['items'][0]['fwd_messages'][0]['from_id']
  573.     user_info = vk.method('users.get', {'user_ids': user_id})
  574.     user_name = user_info[0]['first_name']
  575.     user_lastname = user_info[0]['last_name']
  576.     audio_helper(text_from_audio, chat_id, user_name, user_lastname)
  577.  
  578.  
  579.  
  580. def call(event):
  581.     chat_id = event.chat_id
  582.     admin = create_admins_list(event)
  583.     if event.user_id in admin:
  584.         logging.info("Получена команда !сбор")
  585.         chat = vk.method('messages.getChat', {'chat_id': chat_id, 'fields': 'online'})
  586.         users = chat['users']
  587.         message = ''
  588.         for user in users:
  589.             user_id = user['id']
  590.             user_name = user['first_name']
  591.             user_surname = user['last_name']
  592.             one_call = (f'@id{user_id}({user_name}'
  593.                         f' {user_surname}) приди!\n')
  594.             message += one_call
  595.         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  596.                                     "message": message,
  597.                                     "random_id": str(random.randint(1, 1000000000))})
  598.     else:
  599.         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  600.                                     "message": "доступно ток админам (((",
  601.                                     "random_id": str(random.randint(1, 1000000000))})
  602.  
  603.  
  604. def help_syntez_save(synt, chat_id):
  605.     with open('speech.ogg', "wb") as f:
  606.         for audio_content in synt:
  607.             f.write(audio_content)
  608.     upload_url = vk.method("docs.getMessagesUploadServer", {"type": "audio_message", "peer_id": 2000000000 + chat_id})
  609.     post_info = requests.post(upload_url['upload_url'], files={'file': open("speech.ogg", 'rb')}).json()
  610.     audio_doc = vk.method("docs.save", {"file": post_info['file']})
  611.     audio_message = 'doc{}_{}'.format(audio_doc['audio_message']['owner_id'], audio_doc['audio_message']['id'])
  612.     vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  613.                                 "attachment": audio_message,
  614.                                 "random_id": str(random.randint(1, 1000000000))})
  615.  
  616.  
  617. def syntez(event, text):
  618.     chat_id = event.chat_id
  619.  
  620.     def synthesize(text):
  621.         data = {
  622.             'text': text,
  623.             'lang': 'ru-RU',
  624.             'folderId': folder_id,
  625.             'voice': 'zahar',
  626.             'emotion': 'evil',
  627.         }
  628.         with requests.post(url_yandex, headers=headers, data=data, stream=True) as resp:
  629.             if resp.status_code != 200:
  630.                 raise RuntimeError("Invalid response received: code: %d, message: %s" % (resp.status_code, resp.text))
  631.  
  632.             for chunk in resp.iter_content(chunk_size=None):
  633.                 yield chunk
  634.  
  635.     synt = synthesize(text)
  636.     help_syntez_save(synt, chat_id)
  637.  
  638.  
  639. def syntez_loz(event, text):
  640.     chat_id = event.chat_id
  641.  
  642.     def synthesize(text):
  643.         data = {
  644.             'text': text,
  645.             'lang': 'ru-RU',
  646.             'folderId': folder_id,
  647.             'voice': 'omazh',
  648.             'emotion': 'evil'
  649.         }
  650.         with requests.post(url_yandex, headers=headers, data=data, stream=True) as resp:
  651.             if resp.status_code != 200:
  652.                 raise RuntimeError("Invalid response received: code: %d, message: %s" % (resp.status_code, resp.text))
  653.             for chunk in resp.iter_content(chunk_size=None):
  654.                 yield chunk
  655.  
  656.     synt = synthesize(text)
  657.     help_syntez_save(synt, chat_id)
  658.  
  659.  
  660. def syntez_en(event, text):
  661.     chat_id = event.chat_id
  662.  
  663.     def synthesize(text):
  664.         data = {
  665.             'text': text,
  666.             'lang': 'en-US',
  667.             'folderId': folder_id,
  668.             'voice': 'zahar',
  669.             'emotion': 'evil',
  670.         }
  671.         with requests.post(url_yandex, headers=headers, data=data, stream=True) as resp:
  672.             if resp.status_code != 200:
  673.                 raise RuntimeError("Invalid response received: code: %d, message: %s" % (resp.status_code, resp.text))
  674.             for chunk in resp.iter_content(chunk_size=None):
  675.                 yield chunk
  676.  
  677.     synt = synthesize(text)
  678.     help_syntez_save(synt, chat_id)
  679.  
  680.  
  681. def syntez_good(event, text):
  682.     chat_id = event.chat_id
  683.  
  684.     def synthesize(text):
  685.         data = {
  686.             'text': text,
  687.             'lang': 'ru-RU',
  688.             'folderId': folder_id,
  689.             'voice': 'zahar',
  690.             'emotion': 'good',
  691.         }
  692.         with requests.post(url_yandex, headers=headers, data=data, stream=True) as resp:
  693.             if resp.status_code != 200:
  694.                 raise RuntimeError("Invalid response received: code: %d, message: %s" % (resp.status_code, resp.text))
  695.  
  696.             for chunk in resp.iter_content(chunk_size=None):
  697.                 yield chunk
  698.  
  699.     synt = synthesize(text)
  700.     help_syntez_save(synt, chat_id)
  701.  
  702.  
  703. def anecdot(event):
  704.     logging.info("Получена команда !анек")
  705.     chat_id = event.chat_id
  706.     try:
  707.         text = helper.get_anek()
  708.         syntez(event, text)
  709.     except vk_api.exceptions.ApiError:
  710.         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  711.                                     "message": 'технические шоколадки простите.........',
  712.                                     "random_id": str(random.randint(1, 1000000000))})
  713.  
  714.  
  715. def sing_letov(event):
  716.     logging.info("Получена команда !спой летова")
  717.     text = helper.letov_text()
  718.     syntez(event, text)
  719.  
  720.  
  721. def sing(event):
  722.     logging.info("Получена команда !спой")
  723.     text = helper.music_texts()
  724.     syntez_good(event, text)
  725.  
  726.  
  727. def synt_msg_error(event):
  728.     chat_id = event.chat_id
  729.     vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  730.                                 "message": 'эм ты че еблан',
  731.                                 "random_id": str(random.randint(1, 1000000000))})
  732.  
  733.  
  734. def diarea(event):
  735.     chat_id = event.chat_id
  736.     members = vk.method('messages.getConversationMembers', {'peer_id': 2000000000 + chat_id})
  737.     for member in members['items']:
  738.         member_id = member['member_id']
  739.         if member_id == 261498773 or member_id == 547098395:
  740.             continue
  741.         else:
  742.             vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  743.                                         "message": 'ЗАХОДИМ СЮДА КОНФА УМЕРЛА\n\n'
  744.                                                    'https://vk.me/join/AJQ1d4zW7hEflOC5C8A4Dutl',
  745.                                         "random_id": str(random.randint(1, 1000000000))})
  746.             try:
  747.                 vk.method('messages.removeChatUser', {'chat_id': chat_id, 'member_id': member_id})
  748.             except:
  749.                 continue
  750.  
  751.  
  752. def main():
  753.     commands_audio = {'мут': mute,
  754.                       'мод': mute,
  755.                       'размут': unmute,
  756.                       'развод': unmute,
  757.                       'бан': ban,
  758.                       'юмореска': humor,
  759.                       'самобан': samoban,
  760.                       'самый бан': samoban,
  761.                       'самая бан': samoban,
  762.                       'самая пан': samoban,
  763.                       'варн': warn,
  764.                       'парн': warn,
  765.                       'варна': warn,
  766.                       'анварн': unwarn,
  767.                       'анвар': unwarn,
  768.                       'инфо': info,
  769.                       'тест': test,
  770.                       'фулинфо': full_info,
  771.                       'трек': track,
  772.                       'справка': info_bot,
  773.                       'сбор': call,
  774.                       'анек': anecdot,
  775.                       'а ник': anecdot,
  776.                       'спой летова': sing_letov,
  777.                       'спой летово': sing_letov,
  778.                       'спой лето': sing_letov,
  779.                       'спой': sing}
  780.     commands = {'!мут': mute,
  781.                 '!размут': unmute,
  782.                 '!бан': ban,
  783.                 '!юмореска': humor,
  784.                 '!самобан': samoban,
  785.                 '!варн': warn,
  786.                 '!анварн': unwarn,
  787.                 '!инфо': info,
  788.                 '!тест': test,
  789.                 '!фулинфо': full_info,
  790.                 '!трек': track,
  791.                 '!справка': info_bot,
  792.                 '!сбор': call,
  793.                 '!анек': anecdot,
  794.                 '!спой летова': sing_letov,
  795.                 '!спой': sing,
  796.                 '!фуланварн': full_anwarn}
  797.     for event in longpoll.listen():
  798.         if event.type == VkEventType.MESSAGE_NEW:
  799.             if event.from_chat:
  800.                 chat_id = event.chat_id
  801.                 with open('mutbase.txt', 'rb') as mutbase:
  802.                     mut_list = pickle.load(mutbase)
  803.                 try:
  804.                     if event.user_id in mut_list:
  805.                         pass
  806.                     else:
  807.                         audio_fwd(event)
  808.                 except KeyError:
  809.                     pass
  810.                 except IndexError:
  811.                     try:
  812.                         if event.user_id in mut_list:
  813.                             pass
  814.                         else:
  815.                             try:
  816.                                 audio_command = audio_check(event).lower()
  817.                                 if audio_command in commands_audio:
  818.                                     commands_audio[audio_command](event)
  819.                                 elif audio_command[0:5] == 'скажи':
  820.                                     text = audio_command[6:]
  821.                                     syntez(event, text)
  822.                                 else:
  823.                                     audio_norm(event)
  824.                                     logging.info('Распознали какое - то голосовое')
  825.                             except KeyError:
  826.                                 pass
  827.                             except TypeError:
  828.                                 pass
  829.                             except AttributeError:
  830.                                 pass
  831.                     except IndexError:
  832.                         pass
  833.                 if event.user_id in mut_list:
  834.                     try:
  835.                         message_id = event.message_id
  836.                         vk.method('messages.delete', {'message_ids': message_id, 'delete_for_all': 1})
  837.                     except vk_api.exceptions.ApiError:
  838.                         vk.method("messages.send", {"peer_id": 2000000000 + chat_id,
  839.                                                     "message": 'бот хотел чета удалить но там какая то ошибка'
  840.                                                                ' идите нахуй',
  841.                                                     "random_id": str(random.randint(1, 1000000000))})
  842.                 elif event.text.lower() in commands:
  843.                     commands[event.text.lower()](event)
  844.                 elif event.text.lower()[0:4] == '!код':
  845.                     code(event)
  846.                 elif event.text.lower()[0:6] == '!скажи':
  847.                     logging.info("Получена команда !скажи")
  848.                     text = event.text[7:]
  849.                     try:
  850.                         syntez(event, text)
  851.                     except RuntimeError:
  852.                         synt_msg_error(event)
  853.                 elif event.text.lower()[0:7] == '!лозунг':
  854.                     logging.info("Получена команда !лозунг")
  855.                     text = event.text[8:]
  856.                     try:
  857.                         syntez_loz(event, text)
  858.                     except RuntimeError:
  859.                         synt_msg_error(event)
  860.                 elif event.text.lower()[0:4] == '!say':
  861.                     logging.info("Получена команда !скажи")
  862.                     text = event.text[5:]
  863.                     try:
  864.                         syntez_en(event, text)
  865.                     except RuntimeError:
  866.                         synt_msg_error(event)
  867.                 elif event.text.lower() == '!диарея':
  868.                     ms_info = get_msg_info(event)
  869.                     if ms_info['items'][0]['from_id'] == 256460254:
  870.                         logging.info("пизда)")
  871.                         diarea(event)
  872.                     else:
  873.                         pass
  874.                 elif event.text.lower()[0:7] == '!конфач':
  875.                     text = event.text.lower()[7:]
  876.                     message_id = event.message_id
  877.                     if chat_id == 5:
  878.                         user_id = event.user_id
  879.                         user_info = vk.method('users.get', {'user_ids': user_id})
  880.                         user_name = user_info[0]['first_name']
  881.                         user_lastname = user_info[0]['last_name']
  882.                         vk.method('messages.delete', {'message_ids': message_id, 'delete_for_all': 1})
  883.                         vk.method("messages.send", {"peer_id": 2000000000 + 5,
  884.                                                     "message": f'{user_name} {user_lastname} попытался отправить'
  885.                                                     f'анонимное письмо, но проебался и чуть не отправил его в свою же'
  886.                                                     f'конфу',
  887.                                                     "random_id": str(random.randint(1, 1000000000))})
  888.                     else:
  889.                         try:
  890.                             vk.method('messages.delete', {'message_ids': message_id, 'delete_for_all': 1})
  891.                         except:
  892.                             pass
  893.                         vk.method("messages.send", {"peer_id": 2000000000 + 5,
  894.                                                     "message": f'(вам письмо): {text}',
  895.                                                     "random_id": str(random.randint(1, 1000000000))})
  896.  
  897.                 elif event.text.lower()[0:8] == '!рекруты':
  898.                     if chat_id == 6:
  899.                         message_id = event.message_id
  900.                         user_id = event.user_id
  901.                         user_info = vk.method('users.get', {'user_ids': user_id})
  902.                         user_name = user_info[0]['first_name']
  903.                         user_lastname = user_info[0]['last_name']
  904.                         vk.method('messages.delete', {'message_ids': message_id, 'delete_for_all': 1})
  905.                         vk.method("messages.send", {"peer_id": 2000000000 + 6,
  906.                                                     "message": f'{user_name} {user_lastname} попытался отправить'
  907.                                                     f'анонимное письмо, но проебался и чуть не отправил его в свою же'
  908.                                                     f'конфу',
  909.                                                     "random_id": str(random.randint(1, 1000000000))})
  910.                     else:
  911.                         text = event.text.lower()[8:]
  912.                         message_id = event.message_id
  913.                         try:
  914.                             vk.method('messages.delete', {'message_ids': message_id, 'delete_for_all': 1})
  915.                         except vk_api.exceptions.ApiError:
  916.                             pass
  917.                         vk.method("messages.send", {"peer_id": 2000000000 + 6,
  918.                                                     "message": f'(голубь принес вам письмо): {text}',
  919.                                                     "random_id": str(random.randint(1, 1000000000))})
  920.  
  921.  
  922. if __name__ == '__main__':
  923.     logging.info('Бот запущен!')
  924.     try:
  925.         main()
  926.     except Exception as e:  # тут надо бы выяснить какие ошибки бывают
  927.         logging.error(f'Ошибка - {traceback.format_exc()}')
  928.         time.sleep(25)
  929.         main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement