Змея / Говнокод #27244 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
import datetime, random, time, os, vk_api
import sqlite3 as sl
from vk_api.exceptions import Captcha
from vk_api.longpoll import VkEventType, VkLongPoll
from functions import *
from settings import *
vk_session = vk_api.VkApi(token=token, api_version=5.126)
longpoll = VkLongPoll(vk_session)
vk = vk_session.get_api()
now = datetime.datetime.now()

for event in longpoll.listen():
    try:
        def send_msg(msg='', chat=False, prefix=True, attach=''):
            if chat:
                vk.messages.send(chat_id=event.chat_id,message=msg,attachment=attach)
            else:
                vk.messages.send(user_id=event.user_id,message=msg,attachment=attach)
    except Captcha:
        time.sleep(1)
        send_msg('Ошибка. Слишком частые запросы.')
    except Exception as e:
        time.sleep(1)
        send_msg(f'Неизвестная ошибка при отправке сообщения.\n{e}')
    try:
        if event.type == VkEventType.MESSAGE_NEW and event.to_me:
            user_get = vk.users.get(user_ids=event.user_id)
            first_name = user_get[0]['first_name']
            last_name = user_get[0]['last_name']
            if event.from_chat and event.chat_id and (event.message == '!meme' or event.message == '!мем'):
                meme_create()
                upload = vk_api.VkUpload(vk_session)
                try:
                    a = upload.photo_messages(photos=os.path.dirname(__file__) + '/random_meme.jpg', peer_id=event.user_id)
                    send_msg(attach=f'photo{a[0]["owner_id"]}_{a[0]["id"]}',chat=True, prefix=False)
                except:
                    send_msg("Ошибка. Попробуйте снова.")
            elif event.from_chat and event.chat_id and (event.message == '!info' or event.message == '!инфо'):
                response = requests.get(f'https://vk.com/foaf.php?id={event.user_id}')
                soup = BeautifulSoup(response.text, 'lxml')
                created = soup.find('ya:created').get('dc:date')
                created1 = datetime.datetime.strptime(created, '%Y-%m-%dT%H:%M:%S%z').replace(tzinfo=None)
                diff = datetime.datetime.now()-created1
                modified = soup.find('ya:modified').get('dc:date')
                modified1 = datetime.datetime.strptime(modified, '%Y-%m-%dT%H:%M:%S%z').replace(tzinfo=None)
                send_msg(f'''https://vk.com/id{event.user_id}\nИмя пользователя: {first_name} {last_name}\nАккаунт существует {diff.days} дней.\nДата регистрации: {created1.month} {months[created1.month-1]} {created1.year} в {created1.time()}\nПоследнее обновление информации: {modified1.month} {months[modified1.month-1]} {modified1.year} в {modified1.time()}''', chat=True)
            elif event.from_user and event.user_id and (event.message == '!info' or event.message == '!инфо'):
                response = requests.get(f'https://vk.com/foaf.php?id={event.user_id}')
                soup = BeautifulSoup(response.text, 'lxml')
                created = soup.find('ya:created').get('dc:date')
                created1 = datetime.datetime.strptime(created, '%Y-%m-%dT%H:%M:%S%z').replace(tzinfo=None)
                diff = datetime.datetime.now()-created1
                modified = soup.find('ya:modified').get('dc:date')
                modified1 = datetime.datetime.strptime(modified, '%Y-%m-%dT%H:%M:%S%z').replace(tzinfo=None)
                send_msg(f'''https://vk.com/id{event.user_id}\nИмя пользователя: {first_name} {last_name}\nАккаунт существует {diff.days} дней.\nДата регистрации: {created1.month} {months[created1.month-1]} {created1.year} в {created1.time()}\nПоследнее обновление информации: {modified1.month} {months[modified1.month-1]} {modified1.year} в {modified1.time()}''')
            elif event.from_user and event.user_id and event.message == '!coin':
                coin = 'Орёл' if random.randint(0, 1) == 1 else 'Решка'
                send_msg(f'{coin}')
            elif event.from_user and event.user_id and (event.message == '!anek' or event.message == '!анек'):
                send_msg(f'{get_anek()}', prefix=False)
            elif event.from_user and event.user_id:
                con = sl.connect(os.path.dirname(__file__) + '/users.db')
                count = 0
                with con:
                            con.execute("""
                                CREATE TABLE IF NOT EXISTS USER (
                                    user_id INTEGER NOT NULL PRIMARY KEY,
                                    name TEXT,
                                    permission_lvl INTEGER
                                );
                            """)
                with con:
                    data = con.execute("SELECT * FROM USER")
                    for row in data:
                        if event.user_id in row:
                            count += 1
                    if count == 0:
                        send_msg(f'''Привет, это сообщение отправлено автоматически.\nПока я добавляю информацию о тебе в базу данных, ты можешь ознакомиться с командами написав !help\nКоманд не так много, но в будущем их станет больше ;)''')
                        sql = 'INSERT INTO USER (user_id, name, permission_lvl) values(?, ?, ?)'
                        data = [(event.user_id, f'{first_name} {last_name}', 1)]
                        with con:
                            con.executemany(sql, data)
            if event.attachments:
                print(
                    f"{now}\nuser_id: {event.user_id} | {first_name} {last_name}\nmessage: {event.message}\nattach: {event.attachments}\n")
            else:
                print(
                    f"{now}\nuser_id: {event.user_id} | {first_name} {last_name}\nmessage: {event.text}\n")
    except Captcha:
        time.sleep(1)
        send_msg('Ошибка. Слишком частые запросы.')
    except Exception as e:
        time.sleep(1)
        send_msg(f'Упс. Произошла неизвестная ошибка.\n{e}')

Каким образом можно улучшить этот ссаный говнокод?

Запостил: TupoyChel TupoyChel, (Updated )

Комментарии (97) RSS

  • Если переписать на ПХП, то это станет обычным кодом на ПХП.
    Ответить
  • > Команд не так много, но в будущем их станет больше
    Ну очевидно же, как улучшить. Добавлять новые команды до тех пор, пока не придёт озарение.
    Ответить
    • Это понятно, но как можно получше оптимизировать сам код?)
      Ответить
          • какая асинхронщина )))

            а зачем это кстати? это же не пропустит кадр ивент лупа? Там вообще есть ивент луп?
            Ответить
            • Есть. В строке 12.

              А задержка нужна чтобы ВК не забанил за спам, видимо.
              Ответить
              • да, для этого))0)
                Я просто немного новичок, стараюсь как могу
                Ответить
                • А не боишься, что автор этой либы спиздит у тебя логин-пароль-токен?
                  Ответить
                    • Насколько я знаю, там нужно самому запросы отправлять к ним по каким-то адресам, получать ответы, вот это всё... А все такие библиотеки – это сторонние обёртки.

                      Для йажи что-то официальное есть:

                      https://vk.com/dev/Java_SDK

                      А для питона, кажется, нету )))
                      Ответить
                      • интересно, зачем нужно официальное жабасдк? пилить кастомные клиенты под ведрюшу?
                        Ответить
                        • Для андроида есть отдельное СДК:

                          «SDK упрощает использование API ВКонтакте в Android-приложениях. Пользователи смогут пройти авторизацию без ввода логина и пароля. После этого вы сможете сразу начать использовать методы API»

                          https://vk.com/dev/android_sdk

                          А ещё есть для ПХП и йажаскрипта.
                          Ответить
                        • Странно.Официальных клиентов для вк — хуй да нихуя. А JavaSDK идёт в документации первой, и документация там олимпиадного уровня:
                          //Create service actor
                          Integer appId = 4123123;
                          String accessToken = "sadf0asfsadfas";
                          ServiceActor actor = new ServiceActor(appId, accessToken);

                          Я думал, может для говна под названием mail agent использовалась javaSDK, хуй ведь знает, на чем он написан? Стал гуглить, и увидел это:

                          https://agent.mail.ru/linux

                          > Агент для Linux
                          >Удобство работы и ничего лишнего.
                          > Linux 16.04 и новее

                          Это ж охуенно. Linux 16.04!
                          Ответить
                          • > Linux 16.04

                            Чуваки из будущего, наверное. У меня пока пятый.
                            Ответить
                            • Я из-за злоебучего легаси-драйвера для видюхи на 419 сижу, хотя надо будет проапгрейдить железо, для музла нужно rt ядро палюбэ.

                              Вы, кстати, вообще, осознаёте, какой пирдолинг стоит при желании делать саунд-продакшен под линуксом? И какой при этом флоу, когда всё отконфижено нормально?
                              Ответить
                              • А лор почитаешь, так там половина юзеров звукачи-трюкачи или как минимум гитаросексуалы
                                Ответить
                              • > какой пирдолинг стоит при желании делать саунд-продакшен под линуксом

                                Примерно. Мне подключения пианинки к lmms хватило: по-умолчанию такой охуенный пердёж, дисторшен и лаги, что можно просто ебашить и не париться с эффектами.
                                Ответить
                                • Вообще поидеи на линуксе с подключением музыкальной апаратуры должно быть намного лучше и удобнее, чем через ебучую прослойку виндовского говна который делает задержку в 127г8371е2 миллисекунд еще и зожимает и блядь преобразует неведомой хуйней что на входе в комп получается выблевок. Не зря там существует говноебучий ASIO который в рот ебал прослойки и идет на прямиг.
                                  Ответить
                                  • > ебучую прослойку

                                    Не забывай про пшшшпшшшаудио от поттеринга, которое сейчас во всех дистрибах по-умолчанию.
                                    Ответить
                                    • В линуксе в этом случея можно её вероятно уебать. А в винде "АХАХАХАХАХАХАХХАХА"
                                      Я конечно не ыксперд, но если верить заявлениям пердоликам что можно все поменять в леньке. А в винде как всегда сосни.
                                      Ответить
                                      • > В линуксе в этом случея можно её вероятно уебать.

                                        Угу. Приходишь ты в магазин за гитарой, а тебе продают лопату. Ахуенный инструмент, бери не пожалеешь, надо всего лишь струны прикрутить и звукосниматель. Ну и древко доработать напильником рубанком.

                                        Вся суть линукса.
                                        Ответить
                                        • Но часто так и происходит: и звукосниматели ставят кастомные, и струны меняют, потому что родные это старое говно.

                                          Вон теннисные ракетки, начиная со среднего ценового уровня, вообще продаются без струн, потому что типа ты всё равно будешь нормальные ставить
                                          Ответить
                                          • Насчет пукоснимателей хуйня, хуйня потому что обычно гитару покупают уже чтобы не пердолится а замена звукоснимателя это если тебя чем то уже не устраивает или купил дешевую парашу, а струны да. Струны заведомо хуевыми ставят, чтобы просто гитара имела товарный вид или не ебу для чего.
                                            А покупать гитару ради куска дерева - ебанутсво чтоли. Нахуя и зачем тебе это зубочистка и зачем с этим говном тебе пердолится, когда можно было заведомо купить нормальную гитару с нормальными звукоснимателями.
                                            Ответить
                                            • Звукосниматели могут быть нормальными, просто захотелось другого звука, при этом во всём остальном инструмент может подходить

                                              Но я не гитарист, только рядом стоял
                                              Ответить
                                              • "другого звука" звучит странно. Ну да ладно.
                                                Я тоже не джитарист но джитару имею и даже могу 1 струну дергать, вот это блядь скилл!
                                                https://drive.google.com/file/d/1q2NDF6yP20TySlbisET1hTciUNPB61F0/view

                                                И это на стоковых cort x6 звукоснимателях за 5 гривен. Ну да ладно, у каждого свой долбоебизм и свои заморочки на тему "прекрасного" и "идеального".
                                                Ответить
                                        • Ну винда тогда:
                                          Приходишь ты в магазин за гитарой, а тебе продают УШМ. Ахуенный инструмент, бери не пожалеешь, надо всего лишь купить димер и защитный кожух, и рубанок на скочь прилепить. А Самое главное УНИВЕРСАЛЬНЫЙ!
                                          Ответить
                                            • У меня есть знакомый звукач, который собрал несколько тачек и поставил на них хакинтош лол
                                              Ответить
                                            • Не, аппаратная внешняя звуковуха, или портостудия, и дальше уже что хочешь юзай. Главное звук из компа вытащить во внешнее устройство, и заставить работать.

                                              Ну я вот знаю чувака, у которого в макоси музыка "типа" без пердолинга, но фактически там просто весь пердолинг перемещён в ёблю с пираченными софтами (не покупать же их в самом деле, тем более что для нормального продакшена их нужно штук шесть).
                                              Ответить
                                        • Приходишь ты в магазин за гитарой, а там тебе дают пластмассовую гитару из магазина Детский Мир, у которой есть usb-выход и она работает с одной конкретной китайской версией игры Guitar Hero. Ты говоришь: а можно доработать напильником, чтобы хотя бы в комбик втыкалась? Нет.

                                          Вся суть винды.
                                          Ответить
                                          • Приходишь в магазин за гитарой, а тебе по кускам продают за 666 бачей за "изящное" говно и подставку тоже отдельно пожалуйста. Вся суть макось.
                                            Ответить
                                            • Приходишь в магазин за гитарой, а купил ремешок за 9999
                                              Ответить
                                            • однако в макоси прямо из коробки есть garage band

                                              в остальном сложно не согласиться
                                              Ответить
                                            • Приходишь на мусорку за гитарой, берёшь бесплатно. Вся суть прыщей.
                                              Ответить
                                              • Да не работают все эти метафоры с точки зрения хомячка. Это то же самое, что сравнивать, в социализме и либерализме лучше писать стихи. Ось - это философия, тут ни причём ни качество, ни работоспособность, они скорее вторичны и вытекают из философии оси. Вот например что сказали бы на винде, если бы был оконный менеджер, у которого нет настроек, нет даже конфига, есть только программный интерфейс апи. Да эту программу назвали бы сырой и вообще говном, у нее был бы школосайт на народ.ру и два юзера, создатель и его одноклассник. А в линуксе из-за самой философии это может быть киллер фичей. Общие критерии к этим системам как к однородным продуктам типа этот лучше этот хуже, построить нельзя. Собор и базар, ёба
                                                Ответить
                                                • > это может быть киллер фичей.

                                                  Это и на винде может быть киллер-фичей. Просто надо позиционировать такой софт под правильную ЦА. Любителей попердолиться и попревозмогать невозможное там хватает. Вспомни, как народ ебашит всякие моды к игрушкам, у которых даже API публичного то нету, не то что исходников.

                                                  А философия она всё-таки не у осей, а у людей. И чем популярнее ось, тем больше людей с различной философией тусуется вокруг них.
                                                  Ответить
                                                  • Насчёт модов согласен, а насчёт философии -- получается популярность первичные философии? А может наоборот?
                                                    Ответить
                                                    • что такое философия?

                                                      какая философия у винды? у лялиха? у фрибисди? у полуоси?
                                                      Ответить
                                                      • > какая философия у винды? у лялиха? у фрибисди? у полуоси?

                                                        Да нету её. У нишевых дистрибов или какого-нибудь эппла может и есть какое-то консистентное видение, а у остальных с годами всё размылось. Философия -- это круто, конечно, но юзеров и разрабов то хочется привлечь.
                                                        Ответить
                                                        • > У какого-нибудь эппла может и есть какое-то консистентное видение
                                                          - я десять лет пользуюсь макосью, имхо самыми большими изменениями были отказ от x32, что принесло обычному юзеру только геморрой, и плоский дизайн, спижженный у мс
                                                          Ответить
                                                          • > отказ от x32

                                                            Кстати, а нахуя? Неужели мешок 32-битных либ и переходник с 32-битного API на 64-битное так дорого обходится в поддержке? Все остальные вроде смирились с этим костылём.

                                                            Ну и если уж хочется зафорсить миграцию, почему бы не запретить 32-битность только для нового софта?
                                                            Ответить
                                                            • "потому что могу"

                                                              решили унифицировать. но у эппла вроде современных железок на тридцати двух битах и не осталось давным давно
                                                              Ответить
                                                              • > железок

                                                                Да 32-битных железок и на ПК то не осталось. Я про 32-битный софт.

                                                                Я представляю, какая боль в жопе там была у разрабов, которые до последнего сидели на 32 и забивали на 64, а потом эппл им сказал: "идите нахуй из моего стора пока не портанёте".
                                                                Ответить
                                                              • Кстати, а они же вроде на ARM собирались перейти? Там тоже весь софт дропнут?
                                                                Ответить
                                                                • да нет. у эппла уже долгая история с армом на устройствах и есть богатый опыт поддержки одновременно девайсов и симуляторов (fat binaries, XCFrameworks), технической проблемы нет
                                                                  Ответить
                                                            • > зафорсить миграцию
                                                              - ну тут надо отдать должное, за пару версий до Каталины при запуске 32-битного софта появлялось предупреждающее окошко. так что софт, который не был заброшен, должны были успеть обновить.

                                                              правда, официальный wine до сих пор на новых макосях не работает, какая жалость
                                                              Ответить
                                                    • Общая популярность складывается из пригодности оси для групп с различной философией 😉

                                                      Как-то так. Кто-то юзает потому что тыщу серваков поднять выходит дешевле чем на венде, кто-то юзает потому что подпилить легче чем проприетарщину, кто-то юзает потому что идеология RMS'а нравится. У всех свои тараканы.

                                                      Даже у RMS и Линуса философия разная, вспомни их спор о GPLv3.

                                                      З.Ы. Ну и с развитием ОС она становится интересна каким-то другим группам и они начинают тащить одеяло на себя.
                                                      Ответить
                                  • Без апаратных звуковух нормальных всё плохо. Прослоек в каком-то смысле даже больше, есть же ещё jack по окторому тоже идёт звук, раз на уровне инстанса выбирается например частота дискретизации. А без джека тебе нахуй не нужен стек на линуксе.
                                    Ответить
                                    • Нормальные аппаратных звуковух - не существует. Только внешние или дискретные которые в pci идут
                                      Какой еблан будет себе мамаку покупать Раде хорошей интегрированной ЦАП/АЦП?
                                      P.s. у меня аппаратное почему то ассоциируется со встроенным
                                      Ответить
                            • > Linux 16.04

                              16.04 - похоже на версию убунты.

                              Ubuntu 16.04 LTS «Xenial Xerus»
                              Ответить
                                  • да точно, ошибся, но похуй. Как говорится очередные название прыщей - лишь ненужная мотня.
                                    Ответить
                                • Дистрибутив в честь Нельсона Манделы, но он негр, возможно тоже связано с тобой.
                                  Ответить
                                  • Хелус Длинус всегда был Лимлянином. Это хороший друг Лимского госудаля. А его жену завут Неделжания Ягодиция.
                                    Ответить
                  • Вроде куда то на сторону помимо самого вк ничего не идет, да и прав у самого токена только сообщения
                    Ответить
  • а как так удалось хитро позвать BeautifulSoup, при этом его не импортируя?
    Ответить
    • Наверное, он в functions импортирован. Это вот так «текут абстракции»?
      Ответить
        • Нет, я новенький. Просто мне так понравились вореции, питушня и кобенации, что я решил зарегистрироваться и что-нибудь тоже покукарекать, такое иногда случается

          Кстати, смотри какой смайлик-петузок:

          &(:4)<
          Ответить
          • интересно, можно ли щас зарегать на гк аккаунт с этим смайлом в виде ника
            Ответить
            • Нужно попробовать, будет довольно забавно, лишь бы только ГК не упал.
              Ответить
              • не знаю насчет гк, а вот перл у меня починился /green
                Ответить
          • Чем Гэндальф серый от Гэндальфа белого? Только мытой бородой?
            Ответить
      • Тогда он должен быть ещё и прописан в __all__ в functions, чтобы неявно протечь через звёздочку. Случайно такое не сделаешь.
        Ответить
        • Случайно это очень хорошо делается: в питоне, если __all__ отсутствует, то работает стандартная схема импортирования, то есть подгружается вообще всё (что не начинается с нижнего подчёркивания).
          Ответить
  • > 'INSERT INTO USER (user_id, name, permission_lvl) values(?, ?, ?)'
    Очень показательно, что даже полный нуб, используя язык программирования, отличный от «PHP», смог сделать параметризованный SQL-запрос и не обосраться с «инъекцией».
    Ответить
    • потому что в пи аш пи сикуэль инъекции это часть культуры, а в питоне, руби, джаве, перле, Go, и си шарп нет
      Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8