

Igor
19.01.2016
13:19:21
```#-*-coding:UTF-8-*-
from app.reqBot import Bot
from json import loads, dump
from random import choice
from os import listdir
import vk_api
import pickle as cPickle
global wordBot, vk
vk = vk_api.VkApi().get_api()
botMode=0
bot = Bot(name="S.T.A.L.K.E.R.", token="124678862:AAFEOZXxvIKpASqR5cScW1cyXT3_XqDKTW4")
urlPhotoGroup=["85291460", "8109175", "38635106", "17035846", "96812503", "23289884", "57579356", "92212978", "42278444"]
photoData={
"/zona_wallpaper":"84047762",
"/zona_avatar":"151669801",
"/zona_cosplay":"217797477",
"/zona_bugs":"136309850",
"/zona_screen":"178209537",
"/zona_fanart":"97770808"
}
# openFile = open("words.json", 'r')
# wordBot = loads(openFile.read())
# openFile.close()
openFile = open("zonaHumor.json", 'r')
humorBot = loads(openFile.read())
openFile.close()
def memoized(func):
memory = {}
def memo(*args,**kwargs):
hash = cPickle.dumps((args, sorted(kwargs.iteritems())))
if hash not in memory:
memory[hash] = func(*args,**kwargs)
return memory[hash]
return memo
def start(data, api):
if data["message_text"] == "/start":
api.sendMessage(data["chat_id"], "Привет.\r\nЯ Маслина-Бот. Если ты любитель серии игр S.T.A.L.K.E.R. то я незаменим.\r\nЯ уже кое чего умею, например фотки об сталкере кидать.Или рассказать анекдот про сталкер.\r\nНу, удачи тебе сталкер!")
def about(data, api):
if data["message_text"] == "/about":
api.sendMessage(data["chat_id"], "Мой хозяин - @SymbiSoft\r\nСсылка на него - telegram.me/symbisoft\r\nМое имя в Телеграме - @maslina_bot\r\nА вдруг кому-то захочеш дать мою ссылку то вот - telegram.me/maslina_bot\r\nСпасибо за помощь Nikita aka @nsychev Sychev\r\nВерсия моей прошивки - 0.6 Open Beta Test\r\nОснован на модуле от @nauma, по имени TelegramBotStarter.\r\nЧто то он долго музыку шлет, почему - ¯\_(ツ)_/¯")
def radiationZone(data, api):
if data["message_text"] == "/radiation_zone":
api.sendPhotoUrl(data["chat_id"], "http://www.chernobyl-tour.com/uploads/inform_rad_v3.jpg", data["message_id"])
def zonaHumor(data, api):
if data["message_text"] == "/zona_humor":
numberJoke=choice(humorBot)
api.sendMessage(data["chat_id"], numberJoke)
@memoized
def photoZone(data, api):
if data["message_text"] == "/photo_zone":
photoURLGroup =choice(urlPhotoGroup)
vkRequest = vk.photos.get(owner_id="-"+photoURLGroup, album_id="wall")
photoList = choice(vkRequest['items'])
photoSize=max(int(k.split('_')[1]) for k in photoList.keys() if 'photo' in k)
sendPhotoFromVK = photoList["photo_"+str(photoSize)]
api.sendPhotoUrl(data["chat_id"], sendPhotoFromVK, data["message_id"])
@memoized
def photoSend(data, api):
try:
id=photoData[data["message_text"]]
print(photoData[data["message_text"]])
vkRequest = vk.photos.get(owner_id=-8109175, album_id=str(id))
photoList = choice(vkRequest['items'])
photoSize=max(int(k.split('_')[1]) for k in photoList.keys() if 'photo' in k)
sendPhotoFromVK = photoList["photo_"+str(photoSize)]
api.sendPhotoUrl(data["chat_id"], sendPhotoFromVK, data["message_id"])
except KeyError:
print(KeyError)
def music(data, api):
if data["message_text"] == "/zona_music":
listMusic = listdir("Music/")
listMusicRandom = choice(listMusic)
api.sendAudio(data["chat_id"], "Music/{0}".format(listMusicRandom))
bot.include(start, about, radiationZone, zonaHumor, photoZone, photoSend, music, floodMode)
bot.start(pause=1)
пора меня токен


Whore Amazing
19.01.2016
13:19:30
@ какие-то, хуй пойми

Igor
19.01.2016
13:19:59
так чо, не то?)

Google

Whore Amazing
19.01.2016
13:20:14
хз
это memoized мне не нравится
пили свое кэширование, ручками

Igor
19.01.2016
13:20:29
ну тогда пойде ручками
пойдем*
переписал ту функцию - бот в три раза похудал)

Pavel
19.01.2016
13:22:13
пойдем*
не слушай его, всё там нормально.
кроме протухания кеша.

Whore Amazing
19.01.2016
13:22:44
большему научится

Ilya
19.01.2016
13:23:16
а надо ли сразу

Igor
19.01.2016
13:23:18
вы как дьявол и ангел?

Whore Amazing
19.01.2016
13:23:40

Pavel
19.01.2016
13:23:45
кеширование - это первый пример для декораторов. каноничный.

Google

Pavel
19.01.2016
13:24:32
@... - это и есть декораторы. какой-то код, который выполнится до выполнения основной функции (грубо говоря)

Whore Amazing
19.01.2016
13:25:07

Igor
19.01.2016
13:25:35
ну так должно сработать @memoized??

Whore Amazing
19.01.2016
13:26:02
должно

Pavel
19.01.2016
13:26:08
да, будет работать, только ты его не туда присунул.

Whore Amazing
19.01.2016
13:26:13
но ручками все же предлагаю написать для интереса

Igor
19.01.2016
13:26:33
а куды его присунуть?))

Pavel
19.01.2016
13:26:59
@memoized кеширует всю функцию, перед которой стоит. то есть, ты скешируешь один раз воообще все ответы бота на любой вопрос.
вынести vk.photos.get в отдельную функцию, её обвешать мемоидом

Igor
19.01.2016
13:27:33
такс
вот например на такую функцию
def zonaHumor(data, api):
if data["message_text"] == "/zona_humor":
numberJoke=choice(humorBot)
api.sendMessage(data["chat_id"], numberJoke)
надо кэшировать? И что будет если ее закэшировать таким метожом?
методом*

Pavel
19.01.2016
13:30:13
def first_deko(func):
def inner(*args, **kwargs):
print("Before func!")
rc = func(*args, **kwargs)
print("After func")
return rc
return inner
@first_deko
def function():
print("Inside func")
function()

Igor
19.01.2016
13:31:37
ну я понял как это работает...
Однако, для такой функции надо кэширования? Она же берет ответ с локального файла...

Whore Amazing
19.01.2016
13:31:51
ребят, на андроиде 4.3 пропали значки звонилки-хуилки, которые не пролистываются вместе с основным экраном
как вернуть? я чет не нашел

Pavel
19.01.2016
13:31:52
а локальный файл откуда берётся?

Igor
19.01.2016
13:32:43
openFile = open("zonaHumor.json", 'r')
humorBot = loads(openFile.read())
openFile.close()
def zonaHumor(data, api):
if data["message_text"] == "/zona_humor":
numberJoke=choice(humorBot)
api.sendMessage(data["chat_id"], numberJoke)
xnj&&&

Google

Igor
19.01.2016
13:34:55
что???

Kolyann
19.01.2016
13:35:18
да всё нормально
это уже хора по инерции

Whore Amazing
19.01.2016
13:35:33
там ж написано
все нормально

Viktor
19.01.2016
13:35:37
О, симбисофт жив

Igor
19.01.2016
13:35:52
так я не понял, надо ли там кэширования?))

Viktor
19.01.2016
13:36:13
зачем? (ВАРНИНГ: Я на питоне не пишу)
Кстати
вопрос вам
делаю для изучения сокетов мессенджер и возник вопрос

Whore Amazing
19.01.2016
13:37:01

Viktor
19.01.2016
13:37:18
я короче могу любой символ при желании кинуть собеседнику, и у того он выводится

Viktor
19.01.2016
13:37:32
а значит я могу делать что угодно с его терминалом

Pavel
19.01.2016
13:37:42
хацкир

Viktor
19.01.2016
13:37:48
ну и сам вопрос
как понять что выводить
А что нет?

Whore Amazing
19.01.2016
13:38:10
фильтруй

Viktor
19.01.2016
13:38:25

Google

Whore Amazing
19.01.2016
13:39:04

Viktor
19.01.2016
13:39:08
хм
и что в него добавить?

Pavel
19.01.2016
13:39:14
ты делаешь консольный чат?

Viktor
19.01.2016
13:39:17
да
типо того

Whore Amazing
19.01.2016
13:39:41
добавь команды терминала

Viktor
19.01.2016
13:40:05

Admin
ERROR: S client not available

Viktor
19.01.2016
13:40:19
Лол, неткат также работает

Whore Amazing
19.01.2016
13:40:28
неткат уебищен слегка

Viktor
19.01.2016
13:40:34
то есть можно человеку даже беллы отправлять
я себе как-то сломал все к херам
пришлось неткатом качать файлы

Whore Amazing
19.01.2016
13:41:17
я как-то неткатом ломал сервак провайдера

Viktor
19.01.2016
13:41:18
вручную писать http запроы

Whore Amazing
19.01.2016
13:41:21
сломал :)

Viktor
19.01.2016
13:41:25
и как именно?

Google

Whore Amazing
19.01.2016
13:41:42
как-как...шелл залил и порутал

Ivan
19.01.2016
13:41:57
Выгравировал надпись "Netcat" на металлическом ломе и расхерачил
сервак

Whore Amazing
19.01.2016
13:42:10
а надо было провайдера

Viktor
19.01.2016
13:43:06
Лол

Whore Amazing
19.01.2016
13:45:22
серьезно, таких админов, которые ставят везде пароль admin69, только ломом херачить
а еще у него постоянно падала сетка и в рутовом кронтабе был скрипт, доступный для редактирования юзеру апача

Viktor
19.01.2016
13:46:37
АХАХАХАХАХАХАХ

Whore Amazing
19.01.2016
13:47:14
ну и еще много было веселостей, все уже не упомню
например, дамп скуль базы паролей в документах, доступный для скачивания апачу
собственно, тогда я и познакомился с MVC, когда редактировал вьюшки для того, чтобы не показывало мой безлимитный бесплатный аккаунт в общей статистике в биллинге

Viktor
19.01.2016
13:50:22
KJK

Whore Amazing
19.01.2016
13:51:28
хотя я порой думаю, что можно было и не скрывать, что этот похуист бы положил даже на то, что этот аккаунт называется adminloh
олсо, этот дырявый биллинг я тоже слил с сервера, потому что увидел, что он платный и продается за сотню зеленых
(несмотря на то, что является по сути простым переводом фриварного буржуйского)
надо кому, лол?

Viktor
19.01.2016
13:53:45
На рутрекер положи
или мегу

Pavel
19.01.2016
13:53:55
такое студенчество ещё где-то используется?

Whore Amazing
19.01.2016
13:54:08
используется

Sharkus
19.01.2016
13:54:25
Тогда рутор

Ilya
19.01.2016
13:54:35
как зовётся биллинг?

Whore Amazing
19.01.2016
13:54:36
а там без реги можно заливать?
EasyHotspot