Advertisement
Flyer

Imrubot.py

Mar 28th, 2013
651
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 32.46 KB | None | 0 0
  1. #!/usr/bin/python26
  2. # -*- coding: utf-8 -*-
  3. '''
  4. Created on 19.02.2011
  5. @author: Flyer
  6. '''
  7. from socket import *
  8. import hashlib
  9. import time, datetime
  10. import urllib
  11. import os
  12. from binascii import hexlify, unhexlify
  13. import sys,traceback
  14. from struct import pack, unpack
  15. import threading
  16. import random
  17. #import MySQLdb
  18. import string
  19. import ftplib
  20. from models import Lang
  21. print 'Transformice Exlfer bot'
  22. data = ('http://kikoo.formice.com/data.txt','exlfer','data.txt')
  23. user = ('Imrubot','','801')
  24. ref_file = open('usr/.ref_control')
  25. ref_control = ref_file.read()
  26. ref_file.close()
  27. news_file = open('usr/.news_control')
  28. news_control = news_file.read()
  29. news_file.close()
  30. helper_file = open('usr/.helper_control')
  31. helper_control = helper_file.read()
  32. helper_file.close()
  33. full_file = open('usr/.full_control')
  34. full_control = full_file.read()
  35. full_file.close()
  36. serveur = ('176.31.234.223', 44440)
  37. version = ""
  38. key = ""
  39. commty = ('00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a')
  40. emott = ('00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a')
  41. commk = ('en', 'fr', 'br', 'ru', 'es', 'cn', 'vk', 'tr', 'nl', 'pl', 'hu', 'ен', 'фр', 'ру', 'бр', 'ес', 'вк', 'тр', 'сн', 'нл', 'пл', 'ху')
  42. comms = ('модлист','хелперы','рефб','рефв','hlp','hr','pr','modlist','helpers','refv','refb','add','repl','view', 'help', 'помощь', 'news', 'update', 'restart', 'version', 'обновление', 'что нового', 'обнова', 'новости', 'event','ивент', 'эвент', 'event', 'праздник', 'refhelp', 'helpershelp', 'fullhelp', 'badmap', 'about', 'клубника', 'клубничка', 'клубники', 'клубнички', 'Exlfer', 'exlfer', 'Екслфер', 'екслфер', 'Флер', 'флер', 'Dgi', 'dgi', 'Дги', 'дги', 'Sniperik', 'sniperik', 'Снайперик', 'снайперик', 'Снип', 'снип', 'Snip', 'snip', 'Сниперик', 'сниперик', 'Снайп', 'снайп')
  43. newupdate = ('news', 'update', 'restart', 'version', 'обновление', 'что нового', 'обнова', 'новости')
  44. eventss = ('event', 'ивент', 'эвент', 'инвент', 'праздник')
  45. fathers = ('Exlfer', 'exlfer', 'Екслфер', 'екслфер', 'Флер', 'флер', 'Dgi', 'dgi', 'Дги', 'дги', 'Sniperik', 'sniperik', 'Снайперик', 'снайперик', 'Снип', 'снип', 'Snip', 'snip', 'Сниперик', 'сниперик', 'Снайп', 'снайп')
  46. fleur = 'bug'#тупая переменная для исправления ебаного бага -_-
  47. #############################################################################
  48. class ParseKey():
  49.     def __init__(self, link):
  50.         global version, key
  51.         url = link
  52.         filename = 'cache/data.txt'
  53.         urllib.urlretrieve(url, filename=filename)
  54.         safe = open(filename, 'r')
  55.         kikoo = safe.readline()
  56.         safe.close()
  57.         self.kikoo = kikoo.split(' ')
  58.         version = self.kikoo[1]
  59.         key = self.kikoo[2]
  60. ############################################################################
  61. class CCC:
  62.     firstpack = '\x1C\x01'
  63.     auth = '\x01\x01'
  64.     chatmsg = '\x06\x06'
  65.     emotions = '\x08\x01'
  66.     LogIn = '\x26\x04'
  67.     entertribehouse = '\x16\x01'
  68.  
  69.  
  70. ############################################################################   
  71. class prefixgen():
  72.     def __init__(self,data):
  73.         self.MDT = []
  74.         self.data = data
  75.         message = self.data
  76.         LMDT = list(message[4])
  77.         for c in map(int, LMDT):
  78.             if c == 0: self.MDT.append(chr(10))
  79.             else: self.MDT.append(chr(c))
  80.         self.CMDTEC = int(message[5])
  81.     def __call__(self):
  82.         loc3 = self.CMDTEC % 9000 + 1000
  83.         fingerprint = b""
  84.         fingerprint += bytes(self.MDT[int(loc3 / 1000)])
  85.         fingerprint += bytes(self.MDT[int(loc3 / 100) % 10])
  86.         fingerprint += bytes(self.MDT[int(loc3 / 10) % 10])
  87.         fingerprint += bytes(self.MDT[loc3 % 10])
  88.         self.CMDTEC+=1
  89.         return fingerprint
  90.    
  91. ################################PREFIX BULLE5##############################
  92. class prefixbulle():
  93.     def __init__(self,SMDT,SCMDTEC):
  94.         self.MDT = []
  95.         self.data = data
  96.         dMDT = list(SMDT)
  97.         for c in map(int, dMDT):
  98.             if c == 0: self.MDT.append(chr(10))
  99.             else: self.MDT.append(chr(c))
  100.         self.CMDTEC = int(SCMDTEC)
  101.     def __call__(self):
  102.         loc3 = self.CMDTEC % 9000 + 1000
  103.         fingerprint = b""
  104.         fingerprint += bytes(self.MDT[int(loc3 / 1000)])
  105.         fingerprint += bytes(self.MDT[int(loc3 / 100) % 10])
  106.         fingerprint += bytes(self.MDT[int(loc3 / 10) % 10])
  107.         fingerprint += bytes(self.MDT[loc3 % 10])
  108.         self.CMDTEC+=1
  109.         return fingerprint
  110. #############################RECV C and CC######################
  111. def recv_code(data):
  112.     code = hexlify(data[4:6])
  113.     if code == '0101':
  114.         code = hexlify(data[8:10])
  115.     return code
  116.    
  117. #################################################################
  118. def recv_name(data):
  119.     if '\x2E' in data:
  120.         name = data.split('\x2E')
  121.         if name[1] == '0101':
  122.             name = hexlify(data[8:10])
  123.         return name[1]
  124.        
  125. ############################ХУЯ ПОНЯТЬ ЧТО###########################
  126. def recv_first(data):
  127.     name = data.split['\x01']
  128.     name = name[3]
  129.     if name[0] == '0101':
  130.         name = hexlify(data[8:10])
  131.     return name
  132.    
  133. #####################################################################
  134. def get_packet_data(data):
  135.     size = unpack('!l', data[1:4])[0]
  136.     if size != len(data):
  137.         print('Needed size %d != %d' % (size,  len(data)))
  138.         return None
  139.  
  140. ##############################SURVIVAL###############################
  141. def survival_main():
  142.     while True:
  143.         movement = GenerateBulle() + '\x04\x04\x00\x00\x00\x00\x00\x00\x01\x90\x04\x4D\x00\x00\x00\x21\x00\x00\x00'
  144.         b.send( pack('!l', len(movement)+4) + movement )
  145.         movement = GenerateBulle() + '\x04\x05' + '\x00\x00\x00\x00'
  146.         b.send( pack('!l', len(movement)+4) + movement )
  147.         time.sleep(160)
  148. def normsurv():
  149.     while True:
  150.         survival = GeneratePrefix()+'\x01\x01\x00\x02\x1A\x02'
  151.         m.send('\x00\x00\x00\x0E' + survival )
  152.         surv = GenerateBulle()+'\x01\x01\x00\x02\x1A\x02'
  153.         b.send('\x00\x00\x00\x0E' + surv)
  154.         time.sleep(15)
  155. #############################EMOTIONS############################          
  156. #def emotions():
  157. #   last_timee = time.time()
  158. #   while True:
  159. #       if time.time() - last_timee > 160:
  160. #           #time.sleep(0.1)
  161. #           #movement = GenerateBulle() + '\x04\x05' + '\x00\x00\x00\x00'
  162. #           movement = GenerateBulle() + '\x04\x04\x00\x00\x00\x00\x00\x00\x01\x90\x04\x4D\x00\x00\x00\x21\x00\x00\x00'
  163. #           b.send( pack('!l', len(movement)+4) + movement )
  164. #           movement = GenerateBulle() + '\x04\x05' + '\x00\x00\x00\x00'
  165. #           b.send( pack('!l', len(movement)+4) + movement )
  166. #           last_timee = time.time()
  167. #          
  168. ###########################REPORTS############################################## ОНИ ОФФ ПОКА ЧТО СОРРИ
  169. #def reports_helpers_db(nick, onnick, linkq, reasonq):
  170. #   try:
  171. #       db = MySQLdb.connect(host="sniperik.mysql.ukraine.com.ua", user="sniperik_fleur", passwd="passwordfordrots", db="sniperik_db", charset='utf8')
  172. #       cursor = db.cursor()
  173. #       sql = """INSERT INTO reports_helpers(nickname,onnick, link, reason) VALUES ('%(nickname)s','%(onnick)s', '%(link)s', '%(reason)s') """%{"nickname":nick,"onnick":onnick ,"link":linkq, "reason":reasonq}
  174. #       cursor.execute(sql)
  175. #       db.commit()
  176. #       db.close()
  177. #   except Exception as e:
  178. #       print traceback.format_exc(10)
  179. #def reports_users_db(nick, onnick, linkq, reasonq):
  180. #   try:
  181. #       db = MySQLdb.connect(host="sniperik.mysql.ukraine.com.ua", user="sniperik_fleur", passwd="passwordfordrots", db="sniperik_db", charset='utf8')
  182. #       cursor = db.cursor()
  183. #       sql = """INSERT INTO reports_users(nickname,onnick, link, reason) VALUES ('%(nickname)s','%(onnick)s', '%(link)s', '%(reason)s') """%{"nickname":nick,"onnick":onnick ,"link":linkq, "reason":reasonq}
  184. #       cursor.execute(sql)
  185. #       db.commit()
  186. #       db.close()
  187. #   except Exception as e:
  188. #       print traceback.format_exc(10)
  189. #def reports_maps_db(nick, linkq, reasonq):
  190. #   try:
  191. #       db = MySQLdb.connect(host="sniperik.mysql.ukraine.com.ua", user="sniperik_fleur", passwd="passwordfordrots", db="sniperik_db", charset='utf8')
  192. #       cursor = db.cursor()
  193. #       sql = """INSERT INTO reports_maps(nickname, link, reason) VALUES ('%(nickname)s', '%(link)s', '%(reason)s') """%{"nickname":nick, "link":linkq, "reason":reasonq}
  194. #       cursor.execute(sql)
  195. #       db.commit()
  196. #       db.close()
  197. #   except Exception as e:
  198. #       print traceback.format_exc(10)
  199. ###########################PMSEND#############################     
  200. def pm_send(innick, text):
  201.     recvmsg = GeneratePrefix() + '\x06\x07' + pack('!h', len(innick)) + innick + pack('!h', len(text)) + text
  202.     m.send( pack('!l', len(recvmsg)+4) + recvmsg )
  203.     #####################################API#########################
  204. def API():
  205.     last_timer = time.time()
  206.     while True:
  207.         if time.time() - last_timer > 10:
  208.             recvmsg = GeneratePrefix() + '\x01\x01' + pack('!h', len('\x08\x0D')) + '\x08\x0D'
  209.             m.send( pack('!l', len(recvmsg)+4) + recvmsg )
  210.             helpersonline  = m.recv(4096)
  211.             name = ""
  212.             str = Lang.Lang.mods_str_ru_on
  213.             safe = open('date/.modo', 'r')
  214.             for j in safe.readlines():
  215.                 for i in helpersonline.split('\x01'):
  216.                     if '\x02' in i:
  217.                         name = i.split('\x02')[0]
  218.                         if j == name or j[:len(j)-1] == name:
  219.                             str +=name  + ', '
  220.             safe.close()
  221.             if str == Lang.Lang.mods_str_ru_on: str = Lang.Lang.mods_str_ru_off + ':('
  222.             recvmessage = str[:-2]
  223.             print unicode(recvmessage.decode('utf-8'))
  224.             db = MySQLdb.connect(host="sniperik.mysql.ukraine.com.ua", user="sniperik_fleur", passwd="passwordfordrots", db="sniperik_db", charset='utf8')
  225.             cursor = db.cursor()
  226.             sql = ("""
  227.   UPDATE web_api
  228.   SET staff=%s
  229.   WHERE type=%s
  230. """, (recvmessage, 'M'))
  231.             #sql = """UPDATE web_api SET staff = recvmessage WHERE type = 'M'""" % ('M')
  232.             cursor.execute(sql)
  233.             db.commit()
  234.             db.close()
  235.             last_timer = time.time()
  236.    
  237. #########################RESTART############################
  238. def restart_program():
  239.     python = sys.executable
  240.     os.execl(python, python, * sys.argv)
  241.    
  242. def community_text():
  243.     if communit == '00': comm = 'en'
  244.     elif communit == '01': comm = 'fr'
  245.     elif communit == '02': comm = 'ru'
  246.     elif communit == '03': comm = 'br'
  247.     elif communit == '04': comm = 'es'
  248.     elif communit == '05': comm = 'cn'
  249.     elif communit == '06': comm = 'tr'
  250.     elif communit == '07': comm = 'vk'
  251.     elif communit == '08': comm = 'pl'
  252.     elif communit == '09': comm = 'hu'
  253.     elif communit == '0A': comm = 'nl'
  254. ###################################################
  255. def dec2hex(n):
  256.     return "%X" % n
  257. def logfile():
  258.     last_timerx = time.time()
  259.     while True:
  260.         if time.time() - last_timerx > 180:
  261.             s = ftplib.FTP('sniperik.ftp.ukraine.com.ua','sniperik_fleir','')
  262.             f = open('date/log','rb')
  263.             s.storbinary('STOR www/webinterface/data/exlbot_log', f)
  264.             f.close()
  265.             s.quit()
  266.             last_timerx = time.time()
  267. ParseKey(data[0])
  268. print 'Transformice version: '+version
  269. print 'Client key: '+key
  270. print 'Generating first packet data...'
  271. key = key.replace('\n','')
  272. versia = str(dec2hex(int(version)))
  273. firstpacket = '\x00\x00\x00\x00'+CCC.firstpack + '\x00' + versia.decode('hex') + pack('!h', len(key))+key+'\x17\xED'
  274. firstpacket = pack('!l', len(firstpacket)+4) + firstpacket
  275. print bytes([firstpacket])
  276. print 'done'
  277. print 'Connecting to: '+serveur[0]+':'+str(serveur[1])
  278. m = socket(AF_INET, SOCK_STREAM)
  279. m.connect((serveur[0], serveur[1]))
  280. print 'done'
  281. print 'sending 1st packet...'
  282. m.send(firstpacket)
  283. print 'done'
  284. kikoopwet = m.recv(4096)
  285. print 'Mice online, MDT and CMDTEC from main server'
  286. bullerecv = m.recv(4096)
  287. print 'done'
  288. print bytes([bullerecv.split('\x01')])
  289. firstrecv = bullerecv.split('\x01')
  290. print 'Mice online: ' + firstrecv[3]
  291. print 'MDT: ' + firstrecv[4]
  292. print 'CMDTEC: ' + firstrecv[5]
  293. GeneratePrefix = prefixgen(firstrecv)
  294. print 'LogIn ^^'
  295. h = hashlib.sha256(user[1]).hexdigest()
  296. comm = GeneratePrefix()+'\x08\x02'+'\x02'
  297. m.send(pack('!l', len(comm)+4)+comm)
  298. print 'Community changed!'
  299. print 'Send login&passw&room'
  300. defsize ='\x1A\x04\x01' + user[0] + '\x01' + h + '\x01' + user[2]
  301. authtrue = GeneratePrefix()+ '\x01\x01'+pack('!h', len(defsize))+'\x1A\x04\x01' + user[0] + '\x01' + h + '\x01' + user[2]
  302. porra = pack('!l', len(authtrue)+4) + authtrue
  303. m.send(porra)
  304. data = m.recv(4096)
  305. data = m.recv(4096)
  306. data = m.recv(4096)
  307. data = m.recv(4096)
  308. print bytes(data.split('\x00'))
  309. kes = data.split('\x00')
  310. bulleipk = data[len(data)-26:]
  311. bulleip = bulleipk[:-1]
  312. bulleip = bulleip.split('\x00')[0][1:]
  313. print '-------------------------------------'
  314. print 'ip:' + bytes([bulleip])
  315. key = kes[len(kes)-6]
  316. #key = key.split('\x01')[1]
  317. key = key[1:]
  318. print len(key)
  319. print hexlify(key)
  320. print 'Bulle5 key: ' + bytes([key])
  321. ##############################opening connection to bulle server
  322. print 'Connecting to ' + bulleip + ':' + str(serveur[1])
  323. b = socket(AF_INET, SOCK_STREAM)
  324. b.connect((bulleip, serveur[1]))
  325. print 'done'
  326. ########################sending key
  327. bulkey = '\x00\x00\x00\x00'+key
  328. b.send(pack('!l', len(bulkey)+4)+bulkey)
  329. print bytes([pack('!l', len(bulkey)+4)+bulkey])
  330. dataof = b.recv(4096)
  331. print bytes([dataof])
  332. resul = b.recv(4096)
  333. resul = b.recv(4096)
  334. #################################CMDTEC and MDT######################
  335. unpers = dataof.split('\x00')[4]
  336. print 'MDT & CMDTEC from bulle5 server'
  337. print 'MDT: ' + unpers[1:11]
  338. huyznaetchto = unpack('!H', unpers[11:len(dataof)])
  339. pizdec = str(huyznaetchto)
  340. print 'CMDTEC: ' + pizdec[1:5]
  341. GenerateBulle = prefixbulle(unpers[1:11],pizdec[1:5])
  342. tmm = 0
  343.  
  344. #############################################################
  345. def bulle_server():
  346.     while True:
  347.         time.sleep(0.1)
  348.         bpkg = b.recv(4096)
  349.         bcode = recv_code(bpkg)
  350.         if bcode == '0808':
  351.             emotion = emott[random.randint(0,9)]
  352.             danc = GenerateBulle() + '\x08\x01' + emotion.decode('hex')
  353.             b.send( pack('!l', len(danc)+4) + danc )
  354. #############################################################
  355. ############################START Threads####################
  356. tz=threading.Thread(target=survival_main)
  357. tz.start()
  358. tzzz=threading.Thread(target=normsurv)
  359. tzzz.start()
  360. #emotz=threading.Thread(target=emotions)
  361. #emotz.start()
  362. bulle_serv=threading.Thread(target=bulle_server)
  363. bulle_serv.start()
  364. #log_file_th=threading.Thread(target=logfile)
  365. #log_file_th.start()       
  366. danc = GenerateBulle() + '\x08\x01\x08'
  367. b.send( pack('!l', len(danc)+4) + danc )
  368. ############################START WHILE####################
  369. while True:
  370.     time.sleep(0.1)
  371.     mpkg = m.recv(4096)
  372.     mcode = recv_code(mpkg)
  373.     if mcode == '0607':
  374.         try:
  375.             datas = mpkg.split('\x00')
  376.             innick = datas[4][1:len(datas[4])-1] #nickname
  377.             communit = datas[4][len(datas[4])-1:len(datas[4])]
  378.             messg = datas[5][1:len(datas[5])]
  379.             if communit.encode('hex') not in commty:
  380.                 communit = '00'
  381.                 innick = datas[4][1:len(datas[4])]
  382.                 messg = datas[6][1:len(datas[6])]
  383.             else: communit = communit.encode('hex')
  384.         except Exception as e:
  385.             huihuihui = 'fgsfdh'
  386.         if mpkg[6:7] == '\x01':
  387.             if communit == '00': comm = 'en'
  388.             elif communit == '01': comm = 'fr'
  389.             elif communit == '02': comm = 'ru'
  390.             elif communit == '03': comm = 'br'
  391.             elif communit == '04': comm = 'es'
  392.             elif communit == '05': comm = 'cn'
  393.             elif communit == '06': comm = 'tr'
  394.             elif communit == '07': comm = 'vk'
  395.             elif communit == '08': comm = 'pl'
  396.             elif communit == '09': comm = 'hu'
  397.             elif communit == '0A': comm = 'nl'
  398.             print '[' + comm + ']' + '[' + innick + '] ' + messg.decode('cp866','replace')
  399. #           print '[' + comm + ']' + '[' + innick + '] ' + unicode(messg.decode('utf-8'))
  400.             f = open('date/log', 'a')
  401.             f.write('[' + comm + ']' + '[' + innick + '] ' + messg + "\n")
  402.             f.close()
  403. ###########################################################################################################
  404.         #addtolist and etc
  405.             if fleur == 'bug':
  406.                 nike = messg.split(' ')
  407. #########################################################ADDTOLIST#########################################            
  408.                 if nike[0] == 'add':
  409.                     if innick in ref_control:
  410.                         if nike[1] == 'refb':
  411.                             f = open('date/.bkref', 'a')
  412.                             f.write(nike[2] + "\n")
  413.                             f.close()
  414.                             mapsof = '\x06\x1A\x01friend ' + nike[2]
  415.                             dans = GeneratePrefix() + '\x01\x01' + pack('!h', len(mapsof))  + mapsof
  416.                             m.send( pack('!l', len(dans)+4) + dans )
  417.                             recvmessage = Lang.Lang.addedinlist_completed
  418.                             pm_send(innick, recvmessage)                   
  419.                         elif nike[1] == 'refv':
  420.                             f = open('date/.vanillaref', 'a')
  421.                             f.write(nike[2] + "\n")
  422.                             f.close()
  423.                             mapsof = '\x06\x1A\x01friend ' + nike[2]
  424.                             dans = GeneratePrefix() + '\x01\x01' + pack('!h', len(mapsof))  + mapsof
  425.                             m.send( pack('!l', len(dans)+4) + dans )
  426.                             recvmessage = Lang.Lang.addedinlist_completed
  427.                             pm_send(innick, recvmessage)
  428.                     if innick in helper_control:
  429.                         if nike[1] == 'helpers':
  430.                             f = open('date/.helpers', 'a')
  431.                             f.write(nike[2] + "\n")
  432.                             f.close()
  433.                             mapsof = '\x06\x1A\x01friend ' + nike[2]
  434.                             dans = GeneratePrefix() + '\x01\x01' + pack('!h', len(mapsof))  + mapsof
  435.                             m.send( pack('!l', len(dans)+4) + dans )
  436.                             recvmessage = Lang.Lang.addedinlist_completed
  437.                             pm_send(innick, recvmessage)
  438.                     if innick in full_control:
  439.                         if nike[1] == 'modo':
  440.                             f = open('date/.modo_'+nike[2], 'a')
  441.                             f.write(nike[3] + "\n")
  442.                             f.close()
  443.                             mapsof = '\x06\x1A\x01friend ' + nike[3]
  444.                             dans = GeneratePrefix() + '\x01\x01' + pack('!h', len(mapsof))  + mapsof
  445.                             m.send( pack('!l', len(dans)+4) + dans )
  446.                             recvmessage = Lang.Lang.addedinlist_completed
  447.                             pm_send(innick, recvmessage)
  448.                         elif nike[1] == 'hlplider':
  449.                             hlpt = open('usr/.helper_control', 'a')
  450.                             hlpt.write(nike[2] + "\n")
  451.                             hlpt.close()
  452.                             recvmessage = Lang.Lang.addedinlist_completed
  453.                             pm_send(innick, recvmessage)
  454.                         elif nike[1] == 'reflider':
  455.                             reft = open('usr/.ref_control', 'a')
  456.                             reft.write(nike[2] + "\n")
  457.                             reft.close()
  458.                             recvmessage = Lang.Lang.addedinlist_completed
  459.                             pm_send(innick, recvmessage)                       
  460.                         elif nike[1] == 'admn':
  461.                             admnf = open('usr/.full_control', 'a')
  462.                             admnf.write(nike[2] + "\n")
  463.                             admnf.close()
  464.                             recvmessage = Lang.Lang.addedinlist_completed
  465.                             pm_send(innick, recvmessage)
  466.                         elif nike[1] == 'newsmakers':
  467.                             newsf = open('usr/.news_control', 'a')
  468.                             newsf.write(nike[2] + "\n")
  469.                             newsf.close()
  470.                             recvmessage = Lang.Lang.addedinlist_completed
  471.                             pm_send(innick, recvmessage)
  472.                     if innick in news_control:
  473.                         if nike[1] == 'update':
  474.                             filename = 'update/.news'
  475.                             urllib.urlretrieve('http://lefleur.pro/webinterface/update.txt', filename=filename)
  476.                             recvmessage = Lang.Lang.update_completed
  477.                             pm_send(innick, recvmessage)
  478.                         elif nike[1] == 'event':
  479.                             filename = 'update/.event'
  480.                             urllib.urlretrieve('http://lefleur.pro/webinterface/event.txt', filename=filename)
  481.                             recvmessage = Lang.Lang.update_completed
  482.                             pm_send(innick, recvmessage)
  483. #######################################REPLACE#####################################
  484.                 elif nike[0] == 'repl':
  485.                     if innick in ref_control:
  486.                         news_file = open('date/.vanillaref')
  487.                         vanillaref = news_file.read()
  488.                         news_file.close()  
  489.                         news_file = open('date/.bkref')
  490.                         bref = news_file.read()
  491.                         news_file.close()                      
  492.                         if nike[1] in bref or vanillaref:
  493.                             mapsof = '\x08\x0E\x01' + nike[1]
  494.                             dans = GeneratePrefix() + '\x01\x01' + pack('!h', len(mapsof))  + mapsof
  495.                             m.send( pack('!l', len(dans)+4) + dans )                       
  496.                             recvmessage = Lang.Lang.removeinlist_completed
  497.                             pm_send(innick, recvmessage)
  498.                     if innick in helper_control:
  499.                         news_file = open('date/.helpers')
  500.                         helperslist = news_file.read()
  501.                         news_file.close()
  502.                         if nike[1] in helperslist:
  503.                             mapsof = '\x08\x0E\x01' + nike[1]
  504.                             dans = GeneratePrefix() + '\x01\x01' + pack('!h', len(mapsof))  + mapsof
  505.                             m.send( pack('!l', len(dans)+4) + dans )                       
  506.                             recvmessage = Lang.Lang.removeinlist_completed
  507.                             pm_send(innick, recvmessage)
  508.                     if innick in full_control:
  509.                             mapsof = '\x08\x0E\x01' + nike[1]
  510.                             dans = GeneratePrefix() + '\x01\x01' + pack('!h', len(mapsof))  + mapsof
  511.                             m.send( pack('!l', len(dans)+4) + dans )                       
  512.                             recvmessage = Lang.Lang.removeinlist_completed
  513.                             pm_send(innick, recvmessage)                   
  514. #########################################################REPORT#########################################               
  515.                 elif nike[0] == 'hr':
  516.                     if len(nike)>=3:
  517. #                       reports_helpers_db(innick,nike[1], nike[2],messg[len(nike[1])+len(nike[2])+len(nike[0])+2:])
  518. #                       recvmessage = Lang.Lang.warn_good
  519.                         recvmessage = Lang.Lang.offlinesry
  520.                         pm_send(innick, recvmessage)
  521.                     else:
  522.                         recvmessage = Lang.Lang.addedinlist_error_access
  523.                         pm_send(innick, recvmessage)                   
  524.                 elif nike[0] == 'pr':
  525.                     if len(nike)>=3:
  526. #                       reports_users_db(innick,nike[1], nike[2], messg[len(nike[1])+len(nike[2])+len(nike[0])+2:])
  527. #                       recvmessage = Lang.Lang.warn_good
  528.                         recvmessage = Lang.Lang.offlinesry
  529.                         pm_send(innick, recvmessage)
  530.                     else:
  531.                         recvmessage = Lang.Lang.addedinlist_error_access
  532.                         pm_send(innick, recvmessage)
  533.                 elif nike[0] == 'badmap':
  534.                     if len(nike)>=3:
  535.                         community_text()
  536. #                       reports_maps_db(innick,nike[1],messg[len(nike[1])+7:])
  537. #                       recvmessage = Lang.Lang.warn_good
  538.                         recvmessage = Lang.Lang.offlinesry
  539.                         pm_send(innick, recvmessage)
  540.                     else:
  541.                         recvmessage = Lang.Lang.addedinlist_error_access
  542.                         pm_send(innick, recvmessage)
  543. ######################################NEW MODO##############################################
  544.                 elif nike[0] == 'modlist' or nike[0] == 'модлист':
  545.                     if len(messg) == 7 or len(messg) == 14:
  546.                         if communit == '00': comm = 'en'
  547.                         elif communit == '01': comm = 'fr'
  548.                         elif communit == '02': comm = 'ru'
  549.                         elif communit == '03': comm = 'br'
  550.                         elif communit == '04': comm = 'es'
  551.                         elif communit == '05': comm = 'cn'
  552.                         elif communit == '06': comm = 'tr'
  553.                         elif communit == '07': comm = 'vk'
  554.                         elif communit == '08': comm = 'pl'
  555.                         elif communit == '09': comm = 'hu'
  556.                         elif communit == '0A': comm = 'nl'
  557.                         recvmsg = GeneratePrefix() + '\x01\x01' + pack('!h', len('\x08\x0D')) + '\x08\x0D'
  558.                         m.send( pack('!l', len(recvmsg)+4) + recvmsg )
  559.                         helpersonline  = m.recv(4096)
  560.                         name = ""
  561.                         str = Lang.Lang.mods_str_ru_on
  562.                         strd = []
  563.                         safe = open('date/.modo_'+comm , 'r')
  564.                         for j in safe.readlines():
  565.                             for i in helpersonline.split('\x01'):
  566.                                 if '\x02' in i:
  567.                                     name = i.split('\x02')[0]
  568.                                     if j == name or j[:len(j)-1] == name:
  569.                                         strd.append(name)
  570.                         safe.close()
  571.                         if len(strd) == 0: str = Lang.Lang.mods_str_ru_off
  572.                         else: strd = sorted(strd)
  573.                         strd = ', '.join(strd)
  574.                         recvmessage = str + strd
  575.                         pm_send(innick, recvmessage)
  576.                     else:
  577.                         listcomm = nike[1]
  578.                         if len(nike)>=2:
  579.                             if listcomm in commk:
  580.                                 if listcomm == 'ен': listcomm = 'en'
  581.                                 elif listcomm == 'фр': listcomm = 'fr'
  582.                                 elif listcomm == 'ру': listcomm = 'ru'
  583.                                 elif listcomm == 'бр': listcomm = 'br'
  584.                                 elif listcomm == 'ес': listcomm = 'es'
  585.                                 elif listcomm == 'сн': listcomm = 'cn'
  586.                                 elif listcomm == 'тр': listcomm = 'tr'
  587.                                 elif listcomm == 'вк': listcomm = 'vk'
  588.                                 elif listcomm == 'нл': listcomm = 'nl'
  589.                                 elif listcomm == 'пл': listcomm = 'pl'
  590.                                 elif listcomm == 'ху': listcomm = 'hu'
  591.                                 recvmsg = GeneratePrefix() + '\x01\x01' + pack('!h', len('\x08\x0D')) + '\x08\x0D'
  592.                                 m.send( pack('!l', len(recvmsg)+4) + recvmsg )
  593.                                 helpersonline  = m.recv(4096)
  594.                                 name = ""
  595.                                 str = Lang.Lang.mods_str_ru_on
  596.                                 strd = []
  597.                                 safe = open('date/.modo_'+listcomm , 'r')
  598.                                 for j in safe.readlines():
  599.                                     for i in helpersonline.split('\x01'):
  600.                                         if '\x02' in i:
  601.                                             name = i.split('\x02')[0]
  602.                                             if j == name or j[:len(j)-1] == name:
  603.                                                 strd.append(name)
  604.                                 safe.close()
  605.                                 if len(strd) == 0: str = Lang.Lang.mods_str_ru_off
  606.                                 else: strd = sorted(strd)
  607.                                 strd = ', '.join(strd)
  608.                                 recvmessage = str + strd
  609.                                 pm_send(innick, recvmessage)
  610.                             else:
  611.                                 pm_send(innick, Lang.Lang.errormodlist)
  612. ####################################VIEW###########################################################
  613.                 elif nike[0] == 'view':
  614.                     if innick in ref_control:
  615.                         if nike[1] == 'refv':
  616.                             news_file = open('date/.vanillaref')
  617.                             recvmessage = news_file.read()
  618.                             news_file.close()
  619.                             if recvmessage == '': recvmessage = Lang.Lang.clrlist
  620.                             pm_send(innick, recvmessage)   
  621.                         elif nike[1] == 'refb':
  622.                             news_file = open('date/.bkref')
  623.                             recvmessage = news_file.read()
  624.                             news_file.close()
  625.                             if recvmessage == '': recvmessage = Lang.Lang.clrlist
  626.                             pm_send(innick, recvmessage)   
  627.                     if innick in helper_control:
  628.                         if nike[1] == 'helpers':
  629.                             news_file = open('date/.helpers')
  630.                             recvmessage = news_file.read()
  631.                             news_file.close()
  632.                             if recvmessage == '': recvmessage = Lang.Lang.clrlist
  633.                             pm_send(innick, recvmessage)
  634.                     if innick in full_control:
  635.                         if nike[1] == 'modo':
  636.                             community_text()
  637.                             if len(nike)>2:
  638.                                 news_file = open('date/.modo_'+nike[2])
  639.                                 recvmessage = news_file.read()
  640.                                 news_file.close()
  641.                                 pm_send(innick, recvmessage)
  642.                             else:
  643.                                 news_file = open('date/.modo_'+comm , 'r')
  644.                                 recvmessage = news_file.read()
  645.                                 news_file.close()
  646.                                 pm_send(innick, recvmessage)
  647.                         if nike[1] == 'reflider':
  648.                             news_file = open('usr/.ref_control')
  649.                             recvmessage = news_file.read()
  650.                             news_file.close()
  651.                             pm_send(innick, recvmessage)       
  652.                         if nike[1] == 'hlplider':
  653.                             news_file = open('usr/.helper_control')
  654.                             recvmessage = news_file.read()
  655.                             news_file.close()
  656.                             pm_send(innick, recvmessage)
  657.                         if nike[1] == 'admn':
  658.                             news_file = open('usr/.full_control')
  659.                             recvmessage = news_file.read()
  660.                             news_file.close()
  661.                             pm_send(innick, recvmessage)   
  662.                         if nike[1] == 'newsmakers':
  663.                             news_file = open('usr/.news_control')
  664.                             recvmessage = news_file.read()
  665.                             news_file.close()
  666.                             pm_send(innick, recvmessage)                               
  667. #########################################################INT TRIBE CHAT HELP#########################################              
  668.                 elif nike[0] == 'hlp':
  669.                     community_text()
  670.                     recvmessage = Lang.Lang.alert_hlp
  671.                     pm_send(innick, recvmessage)
  672.                     recvmessage = '[' + comm + ']' + '[' + innick + '] ' + messg[4:]
  673.                     recvmsg = GeneratePrefix() + '\x06\x08' + pack('!h', len(recvmessage)) + recvmessage
  674.                     m.send( pack('!l', len(recvmsg)+4) + recvmsg )     
  675. #################################################ERROR#########################################
  676.             if messg not in comms:
  677.                 if ' ' in messg:
  678.                     nike = messg.split(' ')
  679.                     if nike[0] not in comms:
  680.                         recvmessage = Lang.Lang.addedinlist_error_access
  681.                         pm_send(innick, recvmessage)
  682.                 else:
  683.                     recvmessage = Lang.Lang.addedinlist_error_access
  684.                     pm_send(innick, recvmessage)
  685. #########################################################REFFHELP#########################################     
  686.             if nike[0] == 'refhelp':
  687.                 if innick in ref_control:
  688.                     recvmessage = Lang.Lang.ref_help
  689.                     pm_send(innick, recvmessage)
  690.                 else:
  691.                     recvmessage = Lang.Lang.addedinlist_error_access
  692.                     pm_send(innick, recvmessage)
  693.  
  694. #################################################HELPERS HELP#########################################
  695.             elif nike[0] == 'helpershelp':
  696.                 if innick in helper_control:
  697.                     recvmessage = Lang.Lang.helper_help
  698.                     pm_send(innick, recvmessage)
  699.                 else:
  700.                     recvmessage = Lang.Lang.addedinlist_error_access
  701.                     pm_send(innick, recvmessage)
  702.  
  703. #################################################FULL HELP#########################################
  704.             elif nike[0] == 'fullhelp':
  705.                 if innick in full_control:
  706.                     recvmessage = Lang.Lang.full_help
  707.                     pm_send(innick, recvmessage)
  708.                 else:
  709.                     recvmessage = Lang.Lang.addedinlist_error_access
  710.                     pm_send(innick, recvmessage)
  711. #########################################################HELPERSLIST#########################################  
  712.             elif nike[0] == 'helpers' or nike[0] == 'хелперы':
  713.                 recvmsg = GeneratePrefix() + '\x01\x01' + pack('!h', len('\x08\x0D')) + '\x08\x0D'
  714.                 m.send( pack('!l', len(recvmsg)+4) + recvmsg )
  715.                 helpersonline  = m.recv(4096)
  716.                 name = ""
  717.                 str = Lang.Lang.helpers_str_ru_on
  718.                 strd = []
  719.                 safe = open('date/.helpers', 'r')
  720.                 for j in safe.readlines():
  721.                     for i in helpersonline.split('\x01'):
  722.                         if '\x02' in i:
  723.                             name = i.split('\x02')[0]
  724.                             if j == name or j[:len(j)-1] == name:
  725.                                 strd.append(name)
  726.                 safe.close()
  727.                 if len(strd) == 0: str = Lang.Lang.helpers_str_ru_off + ':('
  728.                 else: strd = sorted(strd)
  729.                 strd = ', '.join(strd)
  730.                 recvmessage = str + strd
  731.                 pm_send(innick, recvmessage)
  732. #########################################################GUIDES#########################################   
  733. #           elif messg == 'guide' or messg == 'гайд':
  734. #               recvmessage = Lang.Lang.error_str_ru_on
  735. #               pm_send(innick, recvmessage)
  736. #########################################################REFFERI BOOTCAMP######################################### 
  737.             elif nike[0] == 'refb' or nike[0] == 'рефб':
  738.                 recvmsg = GeneratePrefix() + '\x01\x01' + pack('!h', len('\x08\x0D')) + '\x08\x0D'
  739.                 m.send( pack('!l', len(recvmsg)+4) + recvmsg )
  740.                 helpersonline  = m.recv(4096)
  741.                 name = ""
  742.                 str = Lang.Lang.ref_str_ru_on
  743.                 strd = []
  744.                 safe = open('date/.bkref', 'r')
  745.                 for j in safe.readlines():
  746.                     for i in helpersonline.split('\x01'):
  747.                         if '\x02' in i:
  748.                             name = i.split('\x02')[0]
  749.                             if j == name or j[:len(j)-1] == name:
  750.                                 strd.append(name)
  751.                 safe.close()
  752.                 if len(strd) == 0: str = Lang.Lang.ref_str_ru_off
  753.                 else: strd = sorted(strd)
  754.                 strd = ', '.join(strd)
  755.                 recvmessage = str + strd
  756.                 pm_send(innick, recvmessage)
  757. #########################################################REFFERI VANILLA#########################################  
  758.             elif nike[0] == 'refv' or nike[0] == 'рефв':
  759.                 recvmsg = GeneratePrefix() + '\x01\x01' + pack('!h', len('\x08\x0D')) + '\x08\x0D'
  760.                 m.send( pack('!l', len(recvmsg)+4) + recvmsg )
  761.                 helpersonline  = m.recv(4096)
  762.                 name = ""
  763.                 str = Lang.Lang.ref_str_ru_on
  764.                 strd = []
  765.                 safe = open('date/.vanillaref', 'r')
  766.                 for j in safe.readlines():
  767.                     for i in helpersonline.split('\x01'):
  768.                         if '\x02' in i:
  769.                             name = i.split('\x02')[0]
  770.                             if j == name or j[:len(j)-1] == name:
  771.                                 strd.append(name)
  772.                 safe.close()
  773.                 if len(strd) == 0: str =Lang.Lang.ref_str_ru_off
  774.                 else: strd = sorted(strd)
  775.                 strd = ', '.join(strd)
  776.                 recvmessage = str + strd
  777.                 pm_send(innick, recvmessage)       
  778. #########################################################UPDATE#########################################       
  779.             elif nike[0] in newupdate:
  780.                 event_file = open('update/.news')
  781.                 event = event_file.read()
  782.                 if event == '': event = Lang.Lang.error_str_ru_on
  783.                 event_file.close()
  784.                 recvmessage = event
  785.                 pm_send(innick, recvmessage)
  786. #########################################################EVENT#########################################    
  787.             elif nike[0] in eventss:
  788.                 event_file = open('update/.event')
  789.                 event = event_file.read()
  790.                 if event == 'def': event = 'Нет активного эвента в данный момент ;('
  791.                 event_file.close()
  792.                 recvmessage = event
  793.                 pm_send(innick, recvmessage)
  794. #########################################################HELP#########################################
  795.             elif nike[0] == 'помощь' or nike[0] == 'help':
  796.                 if nike[0] == 'помощь': recvmessage = Lang.Lang.helpall
  797.                 elif nike[0] == 'help': recvmessage = Lang.Lang.helpall_en
  798.                 pm_send(innick, recvmessage)
  799.             elif nike[0] == 'about':
  800.                 recvmessage = Lang.Lang.aboutme
  801.                 pm_send(innick, recvmessage)
  802. #           elif messg == 'клубника':
  803.             elif 'клубни' in messg:
  804.                 recvmessage = Lang.Lang.strawb
  805.                 pm_send(innick, recvmessage)
  806.             elif messg in fathers:
  807.                 pm_send(innick, 'ПАПА! *-*')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement