Advertisement
Jakowlew

Untitled

May 26th, 2019
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.75 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. import vk_api
  3. from vk_api import VkUpload
  4. from vk_api.longpoll import VkLongPoll, VkEventType
  5. from vk_api.utils import get_random_id
  6. import urllib.request
  7. import random
  8.  
  9. def log(text):
  10.     print(text)
  11.  
  12. def help_command(api, arguments, event):
  13.     text = '''📌 Bot commands:
  14.            /help - помощь
  15.            /state - состояние бота
  16.            /echo - повтор сообщения
  17.            /rand - случайное число
  18.            /vagina - сгенерированная нейросетями вагина'''
  19.     api['vk'].messages.send(peer_id=event.peer_id, message=text , random_id=get_random_id())
  20.  
  21. def state_command(api, arguments, event):
  22.     text = '''📌 Bot commands:
  23.            ✅ /help
  24.            ✅ /state
  25.            ✅ /echo
  26.            ✅ /rand
  27.            ✅ /vagina
  28.  
  29.            📌 Статусы:
  30.            ⚒ - в разработке
  31.            ✅ - работает
  32.            ⚠ - есть проблемы
  33.            ⛔ - не работает'''
  34.     api['vk'].messages.send(peer_id=event.peer_id, message=text , random_id=get_random_id())
  35.  
  36. def echo_command(api, arguments, event):
  37.     if arguments == '':
  38.         text = '''⚠ "text" argument is missing
  39.        ✏ usage: /echo (text)'''
  40.     else:
  41.         text = arguments
  42.     api['vk'].messages.send(peer_id=event.peer_id, message=text , random_id=get_random_id())
  43.  
  44. def vagina_command(api, arguments, event):
  45.     photo_id = random.randint(0, 1000)
  46.     photo_url = 'https://thisvaginadoesnotexist.com/images/{}.png'.format(str(photo_id).rjust(6, '0'))
  47.     urllib.request.urlretrieve(photo_url, 'local.png')
  48.  
  49.     text = 'Vagina #{}\nImage url: {}'.format(photo_id, photo_url)
  50.     photo = api['upload'].photo_messages('local.png')
  51.     vk_photo_url = 'photo{}_{}'.format(
  52.        photo[0]['owner_id'], photo[0]['id']
  53.     )
  54.     api['vk'].messages.send(peer_id=event.peer_id, message=text, random_id=get_random_id(), attachment=vk_photo_url)
  55.  
  56. def rand_command(api, arguments, event):
  57.     args = arguments.split(' ')
  58.     text = ''
  59.     if len(args) >= 2:
  60.         try:
  61.             lower, upper = int(args[0]), int(args[1])
  62.             if lower >= upper:
  63.                 text = '⚠ "lower" must be less than "upper"'
  64.             else:
  65.                 text = 'Your random number is {}'.format(
  66.                     random.randint(lower, upper)
  67.             )
  68.         except:
  69.             text = '''⚠ Wrong numbers
  70.                ✏ usage: /rand (lower upper)'''
  71.     elif len(args) == 1 and args[0] == '':
  72.         text = '''⚠ "lower" argument is missing
  73.                ⚠ "upper" argument is missing
  74.                ✏ usage: /rand (lower upper)'''
  75.     elif len(args) == 1:
  76.         text = '''⚠ "upper" argument is missing
  77.                ✏ usage: /rand (lower upper)'''
  78.    
  79.     api['vk'].messages.send(peer_id=event.peer_id, message=text , random_id=get_random_id())    
  80.    
  81.  
  82. class Bot:
  83.     _TOKEN = 'YOUR TOKEN'
  84.     _COMMANDS = {
  85.         '/help': help_command,
  86.         '/state': state_command,
  87.         '/echo': echo_command,
  88.         '/rand': rand_command,
  89.         '/vagina': vagina_command
  90.     }
  91.     def __init__(self):
  92.         vk_session = vk_api.VkApi(token=self._TOKEN)
  93.  
  94.         self._vk = vk_session.get_api()
  95.         self._upload = vk_api.VkUpload(vk_session)
  96.         self._longpoll = VkLongPoll(vk_session)
  97.  
  98.         log('Bot has been successfully started')
  99.  
  100.     def listen(self):
  101.         for event in self._longpoll.listen():
  102.             if event.type == VkEventType.MESSAGE_NEW:
  103.                 self._select_command(event)
  104.  
  105.     def _select_command(self, event):
  106.         command, arguments = self._parse_command(event.text)
  107.         if command:
  108.             self._execute_command(command, arguments, event)
  109.  
  110.     def _parse_command(self, text):
  111.         if len(text) > 0 and text[0] != '/':
  112.             return None, None
  113.         text = text.strip().lower()
  114.         parsed_text = text.split(' ', 1)
  115.  
  116.         command = parsed_text[0]
  117.         arguments = ''
  118.         if len(parsed_text) > 1:
  119.             arguments = parsed_text[1]
  120.         log('parsed command: {} ({})'.format(command, arguments))
  121.         return command, arguments
  122.  
  123.     def _execute_command(self, command, arguments, event):
  124.         default_command = lambda api, args, event: print("Unknown command: " + command)
  125.         api = {
  126.             'vk': self._vk,
  127.             'upload': self._upload,
  128.             'longpoll': self._longpoll
  129.             }
  130.  
  131.         log('executing command: {} ({})'.format(command, arguments))
  132.         self._COMMANDS.get(command, default_command)(api, arguments, event)
  133.  
  134. def main():
  135.     random.seed()
  136.     bot = Bot()
  137.     bot.listen()
  138.  
  139. if __name__ == '__main__':
  140.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement