Guest User

Untitled

a guest
Oct 8th, 2018
322
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.34 KB | None | 0 0
  1. import pymysql, time, discord
  2. from datetime import datetime
  3.  
  4. import warnings
  5. warnings.simplefilter("ignore")
  6.  
  7. class BotEvents:
  8.  
  9. def __init__(self, *args, **kwargs):
  10.  
  11. @self.bot.event
  12. async def on_ready():
  13. self.log('\n', save=True)
  14. self.log('-----------------------------------------', save=True)
  15. self.log('Authorize successfully', save=True)
  16. self.log('Authorized servers: ', save=True)
  17. [self.log(' Name (id): %s (%s)' % (info.name, info.id), save=True) for info in self.bot.guilds]
  18. self.log('-----------------------------------------', save=True)
  19.  
  20. await self.bot.loop.create_task(self.female_logic())
  21.  
  22.  
  23. def counter(self, server):
  24. db_conn, db_cursor = self.connect_db()
  25. result = db_cursor.execute("SELECT `user_id` FROM `users` WHERE server_id = '{}'".format(server.id))
  26. members = []
  27. if result != 0:
  28. for x in range(result):
  29. members.append(db_cursor.fetchone()[0])
  30. db_conn.close()
  31. while self.run_c:
  32. roles = []
  33. member_role = []
  34. db_conn, db_cursor = self.connect_db()
  35. result = db_cursor.execute("SELECT `role_id`, `min_exp` FROM `auto_roles` WHERE server_id = '{}' ORDER BY `min_exp`".format(server.id))
  36. if result != 0:
  37. info = db_cursor.fetchone()
  38. member_role = [str(info[0]), int(info[1])]
  39. for x in range(result - 1):
  40. info = db_cursor.fetchone()
  41. roles.append([str(info[0]), int(info[1])])
  42. db_conn.close()
  43.  
  44. for member in server.members:
  45. if member != self.bot.user:
  46. db_conn, db_cursor = self.connect_db()
  47. if str(member.id) not in members:
  48. db_cursor.execute("INSERT INTO `users` (`server_id`, `user_name`, `user_id`, `last_update_online`, `last_update`) VALUES ('{0}', '{1}', '{2}', {3}, {3})".format(server.id, member.name.replace("'", ''), member.id, time.time()))
  49. db_conn.commit()
  50. members.append(str(member.id))
  51. self.log(' [%s] Added user: %s' % (server.name, member.name), save=True)
  52. else:
  53. db_cursor.execute("SELECT `member`, `balance`, `online_time`, `last_update_online`, `experience`, `last_update`, `autorole` FROM `users` WHERE (user_id = '{}' AND server_id = '{}')".format(member.id, server.id))
  54. info = db_cursor.fetchone()
  55. if info is not None:
  56. info = {
  57. 'member':bool(info[0]),
  58. 'balance':int(info[1]),
  59. 'online_time':int(info[2]),
  60. 'last_update_online':int(info[3]),
  61. 'experience':int(info[4]),
  62. 'last_update':int(info[5]),
  63. 'autorole':info[6]
  64. }
  65.  
  66. if int(time.time()) - info['last_update_online'] > 60:
  67. if str(member.status) in ['online', 'idle', 'dnd']:
  68. db_cursor.execute("UPDATE `users` SET online_time = {}, last_update_online = {} WHERE (user_id = '{}' AND server_id = '{}')".format(
  69. info['online_time'] + 1,
  70. time.time(),
  71. member.id,
  72. server.id))
  73. db_conn.commit()
  74. self.log('[%s] Updated online for user: %s ' % (server.name, member.name), save=True)
  75.  
  76.  
  77. if int(time.time()) - info['last_update'] > 60:
  78. if member.voice is not None:
  79. db_cursor.execute("UPDATE `users` SET balance = {}, experience = {}, last_update = {} WHERE (user_id = '{}' AND server_id = '{}')".format(
  80. info['balance'] + self.gold_per_minut,
  81. info['experience'] + self.exp_per_minut,
  82. time.time(),
  83. member.id,
  84. server.id))
  85. db_conn.commit()
  86. self.log('[%s] Updated balance, experience for user: %s ' % (server.name, member.name), save=True)
  87.  
  88.  
  89. if len(member_role) != 0:
  90. if not info['member'] and info['experience'] >= member_role[1]:
  91. role_o = discord.utils.get(server.roles, id=int(member_role[0]))
  92. if role_o not in member.roles:
  93. self.bot.loop.create_task(member.add_roles(role_o))
  94. db_cursor.execute("UPDATE `users` SET member = {} WHERE (user_id = '{}' AND server_id = '{}')".format(True, member.id, server.id))
  95. db_conn.commit()
  96.  
  97. new_role = ''
  98. for role in roles:
  99. if role[1] <= info['experience']:
  100. new_role = role[0]
  101.  
  102. if new_role != '' and new_role != info['autorole']:
  103. if info['autorole'] != '0':
  104. role_o = discord.utils.get(server.roles, id=int(info['autorole']))
  105. if role_o in member.roles:
  106. self.bot.loop.create_task(member.remove_roles(role_o))
  107. self.log('[%s] For user %s deleted old role %s(%s)' % (
  108. server.name,
  109. member.name,
  110. role_o.name,
  111. role_o.id) , save=True)
  112.  
  113. time.sleep(2)
  114.  
  115. role_o = discord.utils.get(server.roles, id=int(new_role))
  116. if role_o is not None:
  117. if role_o not in member.roles:
  118. db_cursor.execute("UPDATE `users` SET autorole = '{}' WHERE (user_id = '{}' AND server_id = '{}')".format(new_role, member.id, server.id))
  119. db_conn.commit()
  120. self.bot.loop.create_task(member.add_roles(role_o))
  121. self.log('[%s] For user %s added role %s(%s)' % (server.name, member.name, role_o.name, role_o.id), save=True)
  122. db_conn.close()
Advertisement
Add Comment
Please, Sign In to add comment