Aluf

Chatango bot -Aluf

Jan 26th, 2015
406
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 33.83 KB | None | 0 0
  1. # python imports
  2. ##########################################################
  3. import ch
  4. import random
  5. import sys
  6. import os
  7. import re
  8. import cgi
  9. import traceback
  10. import time
  11. import urllib
  12. import datetime
  13. import binascii
  14. #import youtube
  15. #import helperCmd
  16. import json
  17. ################
  18. ###########################################################
  19. #ENDS HERE
  20. ###########################################################
  21. # Something witty
  22. ###########################################################
  23. #VARS
  24. ###########################################################
  25. lockdown = False
  26. ##################
  27. # TIMER STUFF #
  28. startTime = time.time()
  29. ################
  30. #STATUS
  31. #######
  32. filename = "status.txt"
  33. file = open(filename, 'w')
  34. print("[INF]Setting status to online...")
  35. time.sleep(2)
  36. file.write("Online")
  37. file.close()
  38. #
  39.  
  40. #definitions
  41. dictionary = dict() #volatile... of course...
  42. f = open("definitions.txt", "r") # read-only
  43. print("[INF]Loading Definitions...")
  44. time.sleep(1)
  45. for line in f.readlines():
  46. try:
  47. if len(line.strip())>0:
  48. word, definition, name = json.loads(line.strip())
  49. dictionary[word] = json.dumps([definition, name])
  50. except:
  51. print("[ERR]Cant load definition: %s" % line)
  52. f.close()
  53.  
  54. #OWNER#
  55. spermitted = []
  56. f = open("spermitted.txt", "r") # read-only
  57. print("[INF]Loading Supermasters...")
  58. time.sleep(1)
  59. for name in f.readlines():
  60. if len(name.strip())>0: spermitted.append(name.strip())
  61. f.close()
  62. # END #
  63.  
  64. #MASTERS#
  65. permitted = []
  66. f = open("permitted.txt", "r") # read-only
  67. print("[INF]Loading Masters...")
  68. time.sleep(1)
  69. for name in f.readlines():
  70. if len(name.strip())>0: permitted.append(name.strip())
  71. f.close()
  72. # END #
  73.  
  74. #HALF MASTERS#
  75. hpermitted = []
  76. f = open("hpermitted.txt", "r") # read-only
  77. print("[INF]Loading Half Masters....")
  78. time.sleep(1)
  79. for name in f.readlines():
  80. if len(name.strip())>0: hpermitted.append(name.strip())
  81. f.close()
  82. #END #
  83.  
  84. #WHITELIST#
  85. whitelist = []
  86. f = open("whitelist.txt", "r") # read-only
  87. print("[INF]Loading Whitelists...")
  88. time.sleep(1)
  89. for name in f.readlines():
  90. if len(name.strip())>0: whitelist.append(name.strip())
  91. f.close()
  92. #END #
  93.  
  94. #ROOMS#
  95. rooms = []
  96. f = open("rooms.txt", "r") # read-only
  97. print("[INF]Loading Rooms...")
  98. time.sleep(1)
  99. for name in f.readlines():
  100. if len(name.strip())>0: rooms.append(name.strip())
  101. f.close()
  102. #END#
  103. ###########################################################
  104. ## Thu 14 Apr 2011 00:05:52 BST
  105. ###########################################################
  106. if sys.version_info[0] > 2:
  107. import urllib.request as urlreq
  108. else:
  109. import urllib2 as urlreq
  110.  
  111. dancemoves = [
  112. "(>^.^)> (>^.^<) <(^.^)>",
  113. ]
  114. activated = False # Disabled on default
  115. prefix = ";" # command prefix for some commands
  116.  
  117. def getUptime():
  118. """
  119. Returns the number of seconds since the program started.
  120. """
  121. # do return startTime if you just want the process start time
  122. return time.time() - startTime
  123.  
  124. #SYSTEM UPTIME
  125. def uptime():
  126.  
  127. try:
  128. f = open( "/proc/uptime" )
  129. contents = f.read().split()
  130. f.close()
  131. except:
  132. return "Cannot open uptime file: /proc/uptime"
  133.  
  134. total_seconds = float(contents[0])
  135.  
  136. # Helper vars:
  137. MINUTE = 60
  138. HOUR = MINUTE * 60
  139. DAY = HOUR * 24
  140.  
  141. # Get the days, hours, etc:
  142. days = int( total_seconds / DAY )
  143. hours = int( ( total_seconds % DAY ) / HOUR )
  144. minutes = int( ( total_seconds % HOUR ) / MINUTE )
  145. seconds = int( total_seconds % MINUTE )
  146.  
  147. # Build up the pretty string (like this: "N days, N hours, N minutes, N seconds")
  148. string = ""
  149. if days > 0:
  150. string += str(days) + " " + (days == 1 and "day" or "days" ) + ", "
  151. if len(string) > 0 or hours > 0:
  152. string += str(hours) + " " + (hours == 1 and "hour" or "hours" ) + ", "
  153. if len(string) > 0 or minutes > 0:
  154. string += str(minutes) + " " + (minutes == 1 and "minute" or "minutes" ) + ", "
  155. string += str(seconds) + " " + (seconds == 1 and "second" or "seconds" )
  156.  
  157. return string;
  158.  
  159. class TestBot(ch.RoomManager):
  160. def onInit(self):
  161. self.setNameColor("A9F")
  162. self.setFontColor("540")
  163. self.setFontFace("1")
  164. self.setFontSize(11)
  165. self.enableBg()
  166. self.enableRecording()
  167.  
  168. def getAccess(self, user):
  169. if user.name in spermitted: return 4
  170. elif user.name in permitted: return 3
  171. elif user.name in hpermitted: return 2
  172. elif user.name in whitelist: return 1
  173. else: return 0
  174.  
  175. def onConnect(self, room):
  176. print("[INF] Connected to %s" % room.name)
  177.  
  178. def onReconnect(self, room):
  179. print("[INF] Reconnected to %s" % room.name)
  180.  
  181. def onDisconnect(self, room):
  182. print("[INF] Disconnected to %s" % room.name)
  183.  
  184. def onJoin(self, room, user):
  185. if self.getAccess(user) >= 4:
  186. room.message("-jumps up- waves at " + user.name + "^^")
  187. #elif self.getAccess(user) >= 3:#
  188. #room.message("ohai master " + user.name + " ^^")#
  189. #elif self.getAccess(user) >= 2:#
  190. #room.message("huggles half master " + user.name + " ^^")#
  191.  
  192. def onMessage(self, room, user, message):
  193. # make global (if they will be changed in commands)
  194. global activated
  195. global lockdown
  196. ## print to console
  197. if room.getLevel(self.user) > 0: # if bot is mod
  198. print("[%s]\033[94m[MSG]\033[0m\033[31m[LVL %s]\033[0m[%s][%s] %s: %s" % (time.strftime("%d/%m/%y- %H:%M:%S", time.localtime(time.time())), self.getAccess(user), room.name, message.ip, user.name, message.body)) # with ip
  199. else:
  200. print("[%s]\033[94m[MSG]\033[0m\033[31m[LVL %s]\033[0m[%s] %s: %s" % (time.strftime("%d/%m/%y- %H:%M:%S", time.localtime(time.time())), self.getAccess(user), room.name, user.name, message.body)) # with ip # without ip
  201. if self.user == user: return # ignore self
  202. if self.getAccess(user) == 0: return # ignore non-whitelisted
  203. if self.getAccess(user) < 4 and lockdown: return #ignore everyone when in lockdown
  204. #split message into command and args
  205. data = message.body.split(" ", 1)
  206. if len(data) > 1:
  207. cmd, args = data[0], data[1] # if command and args
  208. else:
  209. cmd, args = data[0], ""# if command and no args
  210.  
  211.  
  212. # implied command?
  213. if len(cmd) > 0:
  214. if cmd[0] == prefix:
  215. used_prefix = True
  216. cmd = cmd[1:]
  217. else: used_prefix = False
  218. else: return
  219.  
  220. # call bot name, activate if deactivated (bot)
  221. if (cmd == room.user.name or cmd =="Sheswolf" or cmd =="SHESWOLF") and len(args) == 0:
  222. if not activated and self.getAccess(user) < 2: return
  223. responce = ["yesh master? %s" % user.name, "hello chosen one", "o-o yesh?", "hi ^^"]
  224. room.message(random.choice(responce))
  225. activated = True
  226.  
  227. # call bot name with command after
  228. elif cmd == room.user.name and len(args) != 0:
  229. activated = True
  230. used_prefix = True
  231. data = args.split(" ", 1)
  232. if len(data) > 1:
  233. cmd, args = data[0], data[1] # if command and args
  234. else:
  235. cmd, args = data[0], "" # if command and no args
  236.  
  237. # not activated, no commands
  238. if not activated: return
  239.  
  240. # hide/deactive bot (hide)
  241. if cmd == "hide" and self.getAccess(user) >= 2: # level 2+
  242. activated = False
  243. room.message(cgi.escape("I ish hiding >_> %s" % user.name))
  244.  
  245. #eval
  246. elif cmd == "eval" and self.getAccess(user) >= 4: # level 4+
  247. try:
  248. ret = eval(args)
  249. room.message(str(repr(ret)+" ^-^"))
  250. except:
  251. room.message("failed to evaluate")
  252.  
  253. # hello (hello bot)
  254. #elif (used_prefix or args.find(room.user.name)) and (cmd == "hello" or cmd == "hi" or cmd =="sup"):#
  255. #room.message("sup %s" % user.name)#
  256.  
  257. # message delay in seconds (delay 10)
  258. elif used_prefix and cmd == "delay":
  259. self.setTimeout(int(args), room.message, "heh that was %s of bordem >_>" % args)
  260.  
  261. # server uptime (uptime)
  262. elif used_prefix and cmd == "uptime":
  263. room.message("sys uptime: %s" % uptime())
  264. # server uptime (uptime)
  265. elif used_prefix and cmd == "sut":
  266. room.message("I have been playing for: %s" % getUptime())
  267.  
  268. # heart/ily (<3 bot, ily bot)
  269. elif (used_prefix or args.find(room.user.name)) and (cmd == "<3" or cmd == "ily"):
  270. room.message(random.choice(["<3 u too %s" % user.name, "Wonders over to %s and sits besides them o-o" % user.name,]))
  271.  
  272. # kill bot (eeps)
  273. elif used_prefix and cmd == "eeps" and self.getAccess(user) >= 4:
  274. if user.name.lower() == "sorchmaster":
  275. room.message("Mutters something before leaving")
  276. time.sleep(1)
  277. self.stop()
  278. else:
  279. room.message("wish i could =/")
  280. # Save stuffs
  281. elif used_prefix and cmd == "sav":
  282. if user.name in spermitted or permitted:
  283. room.message("I ish saved everything ^^")
  284. time.sleep(1)
  285. print("[SAV] Saving Definitions..")
  286. f = open("definitions.txt", "w")
  287. for word in dictionary:
  288. definition, name = json.loads(dictionary[word])
  289. f.write(json.dumps([word, definition, name])+"\n")
  290. f.close()
  291. print("[SAV] Saving SuperMasters..")
  292. f = open("spermitted.txt", "w")
  293. f.write("\n".join(spermitted))
  294. f.close()
  295. print("[SAV] Saving Masters..")
  296. f = open("permitted.txt", "w")
  297. f.write("\n".join(permitted))
  298. f.close()
  299. print("[SAV] Saving HalfMasters..")
  300. f = open("hpermitted.txt", "w")
  301. f.write("\n".join(hpermitted))
  302. f.close()
  303. print("[SAV] Saving Whitelist..")
  304. f = open("whitelist.txt", "w")
  305. f.write("\n".join(whitelist))
  306. f.close()
  307. print("[SAV] Saving Rooms..")
  308. f = open("rooms.txt", "w")
  309. f.write("\n".join(rooms))
  310. f.close()
  311. print("[SAV] Saving Whitelist..")
  312. f = open("whitelist.txt", "w")
  313. f.write("\n".join(whitelist))
  314. f.close()
  315. else:
  316. room.message("wish i could =/")
  317.  
  318.  
  319. # cookie responce (cookie?)
  320. elif cmd =="cookie?":
  321. room.message(random.choice(["yesh" , "sure ^^" , "no ty =/" , "O_O gimme" , "cookie...YESH" , "^^" , "COOKIE" , "-noms cookie- thankies"]))
  322.  
  323.  
  324.  
  325. #what room
  326. elif cmd=="whatroom":
  327. room.message("<b>%s</b> this is <b>http://%s.chatango.com</b>" % (user.name, room.name), True)
  328.  
  329. #bye
  330. elif used_prefix and cmd == "bye":
  331. room.message("awww bye " + user.name + " =(")
  332. # half masters
  333. elif used_prefix and cmd == "hmasters":
  334. if len(args) >= 3:
  335. do, name = args.lower().split(" ", 1)
  336. if self.getAccess(ch.User(name)) > 3 or self.getAccess(user) < 2:
  337. room.message("no. =/")
  338. return
  339. if do == "add":
  340. if name in hpermitted: room.message("%s is already a hmaster. ^^" % name, True)
  341. else:
  342. hpermitted.append(name)
  343. room.message("it has been done. ^^ remember do not add people that abuse me ^^", True)
  344. elif do == "remove":
  345. if name not in hpermitted: room.message("%s is not a hmaster. ^^" % name, True)
  346. else:
  347. hpermitted.remove(name)
  348. room.message("it has been done. ^^ sowwy =/", True)
  349. else:
  350. room.message("what? >.>", True)
  351. else:
  352. if len(hpermitted) == 0: room.message("I have no half masters. ^^", True)
  353. else: room.message("my half masters are: <b>%s</b> They is better than you ....Jelly?" % ", ".join(hpermitted), True)
  354. # room add
  355. elif used_prefix and cmd == "room":
  356. if len(args) >= 3:
  357. do, name = args.lower().split(" ", 1)
  358. if self.getAccess(ch.User(name)) > 4 or self.getAccess(user) < 4:
  359. room.message("no. =/")
  360. return
  361. if do == "add":
  362. if name in rooms: room.message("%s in my list. ^^" % name, True)
  363. else:
  364. rooms.append(name)
  365. room.message("it has been done. ^^ I ish there ^^", True)
  366. self.joinRoom(name)
  367. elif do == "remove":
  368. if name not in rooms: room.message("%s is not in my list =/. ^^" % name, True)
  369. else:
  370. rooms.remove(name)
  371. room.message("it has been done. ^^ sowwy =/", True)
  372. self.leaveRoom(name)
  373. else:
  374. room.message("what? >.>", True)
  375. else:
  376. if len(rooms) == 0: room.message("hell i have no rooms how is this possible. ^^", True)
  377. else: room.message("Please use my rooms command use botteh rooms")
  378. # masters
  379. elif used_prefix and cmd == "masters":
  380. if len(args) >= 3:
  381. do, name = args.lower().split(" ", 1)
  382. if self.getAccess(ch.User(name)) > 3 or self.getAccess(user) <= 3:
  383. room.message("no. =/")
  384. return
  385. if do == "add":
  386. if name in permitted: room.message("%s is already a master. ^^" % name, True)
  387. else:
  388. permitted.append(name)
  389. room.message("it has been done. ^^ remember do not add people that abuse me ^^", True)
  390. elif do == "remove":
  391. if name not in permitted: room.message("%s is not a master. ^^" % name, True)
  392. else:
  393. permitted.remove(name)
  394. room.message("it has been done. ^^ sowwy =/", True)
  395. else:
  396. room.message("what? >.>", True)
  397. else:
  398. if len(permitted) == 0: room.message("I have no masters. ^^", True)
  399. else: room.message("my masters are: <b>%s</b> Your all just awesomes ^^" % ", ".join(permitted), True)
  400.  
  401. # whitelist
  402. elif used_prefix and cmd == "whitelist":
  403. if len(args) >= 3:
  404. do, name = args.lower().split(" ", 1)
  405. if self.getAccess(ch.User(name)) > 2:
  406. room.message("no. =/")
  407. return
  408. if do == "add":
  409. if self.getAccess(user) >= 2:
  410. if name in whitelist:
  411. room.message("%s is already whitelisted. ^^" % name, True)
  412. else:
  413. whitelist.append(name)
  414. room.message("it has been done. ^^ remember do not add people that abuse me ^^")
  415. else:
  416. room.message("%s it has not been possible to connect your call please hang up and try again" % user.name)
  417. elif do == "remove":
  418. if self.getAccess(user) <= 1:
  419. room.message("no. =/")
  420. return
  421. if name not in whitelist: room.message("%s is not whitelisted. ^^" % name, True)
  422. else:
  423. whitelist.remove(name)
  424. room.message("it has been done. ^^ sowwy =/", True)
  425. else:
  426. room.message("what? >.>", True)
  427. else:
  428. if len(whitelist) == 0: room.message("I have no whitelisted members. ^^", True)
  429. elif len(whitelist) == 1: room.message("I have 1 whitelisted member. ^^", True)
  430. else: room.message("I have %s whitelisted members. ^^" % len(whitelist), True)
  431.  
  432. # bot rooms
  433. elif (used_prefix and cmd == "whereiam" or cmd =="rooms"):
  434. room.message("I can be found in: <b>%s</b>" % ",".join(rooms),True)
  435.  
  436. # user count
  437. elif used_prefix and cmd == "howmany":
  438. room.message("i see: " + str(room.usercount))
  439.  
  440. # help command
  441. elif (used_prefix and cmd == "help"):
  442. room.message("<a href=\"http://endor.sorch.info/botteh/\" target=\"_blank\"><b>Command list</b></a> Follow me on <a href=\"http://twitter.com/followbotteh/\" target=\"_blank\"><b>Twitter<b></a>", True)
  443.  
  444. # join room
  445. elif (used_prefix and cmd == "goto" or cmd == "aport") and len(args) > 0:
  446. if user.name in permitted or spermitted:
  447. print("[INF] Joining %s..." % args.split()[0])
  448. self.joinRoom(args.split()[0])
  449. room.message("k there. ^^")
  450.  
  451. # say
  452. elif (used_prefix and cmd == "say") and len(args) > 0:
  453. if self.getAccess(user) >= 1:
  454. room.message("<b>%s</b> -%s-" % (args, user.name), True)
  455. else:
  456. room.message("no. ^^")
  457.  
  458. # what access
  459. elif used_prefix and cmd == "lvl":
  460. if len(args) >= 3:
  461. do, name = args.lower().split(" ", 1)
  462. if self.getAccess(ch.User(name)) > 4 or self.getAccess(user) < 2:
  463. room.message("no. =/")
  464. return
  465. if do == "check":
  466. if name in whitelist: room.message("%s is level 1. ^^" % name, True)
  467. else:
  468. if name in permitted: room.message("%s is level 3" % name, True)
  469. elif name in hpermitted: room.message("%s is level 2" % name, True)
  470. elif name in spermitted: room.message("%s is level 4 O.o" % name, True)
  471. elif name not in whitelist: room.message("%s is level 0" % name, True)
  472. # lockdown
  473. elif (used_prefix and cmd == "lockdown"):
  474. if self.getAccess(user) == 4:
  475. if len(args.split()) > 0 and args.split()[0].lower() == "release":
  476. lockdown = False
  477. room.message("lets play. ^^")
  478. filename ="status.txt"
  479. print("[INF]Setting status to normal mode...")
  480. file = open(filename, 'w')
  481. file.write("Online")
  482. file.close()
  483. else:
  484. lockdown = True
  485. filename = "status.txt"
  486. file = open(filename, 'w')
  487. print("[INF]Setting status to lockdown...")
  488. file.write("in Lockdown mode")
  489. file.close()
  490. room.message("I ish locked down. ^^")
  491.  
  492. else:
  493. room.message("no. ^^")
  494.  
  495. # kill
  496. elif (used_prefix and cmd == "kill") and len(args) > 0:
  497. if self.getAccess(user) >= 1:
  498. room.message("*RAWR* KEELS %s xD" % args)
  499. else:
  500. room.message("no. ^^")
  501. # kill
  502. elif (used_prefix and cmd == "huggle" or cmd =="hug") and len(args) > 0:
  503. if self.getAccess(user) >= 1:
  504. room.message("*HUGGLES* %s" % args)
  505. else:
  506. room.message("no. ^^")
  507. # fake find
  508. elif (used_prefix and cmd == "locate") and len(args) > 0:
  509. if self.getAccess(user) >= 1:
  510. name = args.split()[0].lower()
  511. if not ch.User(name).roomnames: room.message("dont see them. ^^")
  512. else: room.message("%s they are in <b>%s</b> >_>" % (user.name, ", ".join(ch.User(name).roomnames)), True)
  513. else:
  514. room.message("no. ^^")
  515. # give cookie
  516. elif (used_prefix and cmd == "givecookie") and len(args) > 0:
  517. room.message("gives %s a cookie ^^" % args)
  518.  
  519. elif cmd =="8ball":
  520. room.message(random.choice(["Signs point to yes." , "No." , "Yep.", "Reply hazy, lemme sober up.","Probably, yeah.","Nope.","As I see it, yes.","You may rely on it.","Fucking 8 balls, how do they work?","Outlook not so good.","It is decidedly so.","Better not tell you now.","Very doubtful.","It is certain.","I dunno. What am I, a mind reader?","Most likely.","Just keep spamming it, bro.","Use more lube and try again.","Outlook good.","Don't count on it.","Does Wolf masturbate to Asuka?","It is unknowable, like Bleak's face.","Why are you asking me?"]))
  521.  
  522.  
  523. # leave room
  524. elif (used_prefix and cmd == "leave" or cmd == "ninjafy") and len(args) > 0:
  525. if user.name in permitted or spermitted:
  526. self.leaveRoom(args)
  527. room.message("k gone. ^^")
  528. else:
  529. room.message("no. ^^")
  530.  
  531. # give cookie
  532. elif (used_prefix and cmd == "define") and len(args) > 0:
  533. try:
  534. word, definition = args.split(":", 1)
  535. word = word.lower()
  536. except:
  537. word = args.split()[0].lower()
  538. definition = ""
  539. if len(word.split()) > 1:
  540. room.message("error: no phrases")
  541. return
  542. if len(args.split()) > 1 and args.lower().split()[1] == "remove":
  543. if word in dictionary:
  544. definition, name = json.loads(dictionary[word])
  545. if name == user.name or self.getAccess(user) >= 3:
  546. del dictionary[word]
  547. room.message("removed")
  548. return
  549. else:
  550. room.message("error: no access")
  551. return
  552. else:
  553. room.message("<b>%s</b> is not yet defined you can define it by typing <b>botteh define %s: meaning</b>" % args, True)
  554. elif len(definition) > 0: #if there's a colon somewhere
  555. if word in dictionary:
  556. room.message("<b>%s</b> erm... thats already defined. You can not define it again >_>" % user.name, True)
  557. else:
  558. dictionary[word] = json.dumps([definition, user.name])
  559. room.message(word + ": " + definition + "- " + user.name)
  560. else:
  561. if word in dictionary:
  562. definition, name = json.loads(dictionary[word])
  563. room.message(word + ": " + definition + " - " + name)
  564. else:
  565. room.message("<b>%s</b> is not yet defined you can define it by saying <b>botteh define %s: meaning</b> ^^" % (args, args), True)
  566.  
  567.  
  568. # dance
  569. elif (used_prefix and cmd == "dance"):
  570. if self.getAccess(user) >= 1:
  571. for i, msg in enumerate(dancemoves):
  572. self.setTimeout(i / 2, room.message, msg)
  573. else:
  574. room.message("no dances for you >_>")
  575.  
  576. # youtube search
  577. elif (used_prefix and cmd == "tube" or used_prefix and cmd == "ytb"):
  578. search = args.split()
  579. def everything_between(text,begin,end):
  580. idx1=text.find(begin)
  581. idx2=text.find(end,idx1)
  582. return ' '.join(text[idx1+len(begin):idx2].strip().split())
  583. try:
  584. raw = str(urllib.request.urlopen("http://gdata.youtube.com/feeds/api/videos?vq=%s&racy=include&orderby=relevance&max-results=1" % "+".join(search)).read())
  585. id = helperCmd.everything_between(raw,'http://www.youtube.com/watch?v=','&amp;')
  586. info = youtube.Video(id)
  587. link = "http://www.youtube.com/watch?v="+id
  588. room.message("%s, i found: \"%s\" by %s. %s" % (user.name, info.get_title()[:50], info.get_auth()[:50], link), True)
  589. except:
  590. room.message("Error: Nothing found for %s =/" % args)
  591.  
  592. #
  593. # Persona
  594. #
  595. #redo "split message into command and args"
  596. data = message.body.split(" ", 1)
  597. if len(data) > 1:
  598. cmd, args = data[0], args # if command and args
  599. else:
  600. cmd, args = data[0], ""# if command and no args
  601. # butterfly responce (8|8)
  602. if cmd =="8|8":
  603. room.message(random.choice(["Omg sexy *chases* ^w^" , "woah" , "I want one =/" , "O_O -watches-" , "O.o -touchs-" , "^^" , "oooo"]))
  604.  
  605. elif cmd == "><>":
  606. room.message(random.choice(["eeee fishes ^^" , "o.o fish" , "I want one =/" , "waves at fishy ^^" , "O.o -touchs-" , "^^" , "oooo fish"]))
  607.  
  608. def onFloodWarning(self, room):
  609. room.reconnect()
  610.  
  611.  
  612. def onUserCountChange(self, room):
  613. print("users: " + str(room.usercount))
  614.  
  615.  
  616. ########################################################################################
  617. # Bot username password and rooms
  618. ########################################################################################
  619. def hexc(e):
  620. et, ev, tb = sys.exc_info()
  621. if not tb: print(str(e))
  622. while tb:
  623. lineno = tb.tb_lineno
  624. fn = tb.tb_frame.f_code.co_filename
  625. tb = tb.tb_next
  626. print("(%s:%i) %s" % (fn, lineno, str(e)))
  627.  
  628. if __name__ == "__main__":
  629. error = 0
  630. try:
  631. os.system("clear") # clear console on launch
  632. TestBot.easy_start(rooms, "generates", "081ss9321")
  633. except KeyboardInterrupt:
  634. print("[ERR] Console initiated a kill.")
  635. except Exception as e:
  636. print("[ERR] Fatal error.")
  637. error = 1
  638. hexc(e)
  639. print("[SAV] Saving Definitions..")
  640. f = open("definitions.txt", "w")
  641. for word in dictionary:
  642. definition, name = json.loads(dictionary[word])
  643. f.write(json.dumps([word, definition, name])+"\n")
  644. f.close()
  645. print("[SAV] Saving SuperMasters..")
  646. f = open("spermitted.txt", "w")
  647. f.write("\n".join(spermitted))
  648. f.close()
  649. print("[SAV] Saving Masters..")
  650. f = open("permitted.txt", "w")
  651. f.write("\n".join(permitted))
  652. f.close()
  653. print("[SAV] Saving HalfMasters..")
  654. f = open("hpermitted.txt", "w")
  655. f.write("\n".join(hpermitted))
  656. f.close()
  657. print("[SAV] Saving Whitelist..")
  658. f = open("whitelist.txt", "w")
  659. f.write("\n".join(whitelist))
  660. f.close()
  661. print("[SAV] Saving Rooms..")
  662. f = open("rooms.txt", "w")
  663. f.write("\n".join(rooms))
  664. f.close()
  665. #STATUS
  666. #
  667. filename = "status.txt"
  668. f = open(filename, 'w')
  669. print ("[INF] Setting status offline...")
  670. f.write("Offline")
  671. f.close()
  672. #
  673.  
  674. if error == 1:
  675. print("Waiting 10 seconds for you to read the error..")
  676. time.sleep(10)
  677. print("[INF] Shutting down..")
  678. ########################################################################################
Advertisement
Add Comment
Please, Sign In to add comment