Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pymysql, time, discord
- from datetime import datetime
- import warnings
- warnings.simplefilter("ignore")
- class BotEvents:
- def __init__(self, *args, **kwargs):
- @self.bot.event
- async def on_ready():
- self.log('\n', save=True)
- self.log('-----------------------------------------', save=True)
- self.log('Authorize successfully', save=True)
- self.log('Authorized servers: ', save=True)
- [self.log(' Name (id): %s (%s)' % (info.name, info.id), save=True) for info in self.bot.guilds]
- self.log('-----------------------------------------', save=True)
- await self.bot.loop.create_task(self.female_logic())
- def counter(self, server):
- db_conn, db_cursor = self.connect_db()
- result = db_cursor.execute("SELECT `user_id` FROM `users` WHERE server_id = '{}'".format(server.id))
- members = []
- if result != 0:
- for x in range(result):
- members.append(db_cursor.fetchone()[0])
- db_conn.close()
- while self.run_c:
- roles = []
- member_role = []
- db_conn, db_cursor = self.connect_db()
- result = db_cursor.execute("SELECT `role_id`, `min_exp` FROM `auto_roles` WHERE server_id = '{}' ORDER BY `min_exp`".format(server.id))
- if result != 0:
- info = db_cursor.fetchone()
- member_role = [str(info[0]), int(info[1])]
- for x in range(result - 1):
- info = db_cursor.fetchone()
- roles.append([str(info[0]), int(info[1])])
- db_conn.close()
- for member in server.members:
- if member != self.bot.user:
- db_conn, db_cursor = self.connect_db()
- if str(member.id) not in members:
- 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()))
- db_conn.commit()
- members.append(str(member.id))
- self.log(' [%s] Added user: %s' % (server.name, member.name), save=True)
- else:
- 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))
- info = db_cursor.fetchone()
- if info is not None:
- info = {
- 'member':bool(info[0]),
- 'balance':int(info[1]),
- 'online_time':int(info[2]),
- 'last_update_online':int(info[3]),
- 'experience':int(info[4]),
- 'last_update':int(info[5]),
- 'autorole':info[6]
- }
- if int(time.time()) - info['last_update_online'] > 60:
- if str(member.status) in ['online', 'idle', 'dnd']:
- db_cursor.execute("UPDATE `users` SET online_time = {}, last_update_online = {} WHERE (user_id = '{}' AND server_id = '{}')".format(
- info['online_time'] + 1,
- time.time(),
- member.id,
- server.id))
- db_conn.commit()
- self.log('[%s] Updated online for user: %s ' % (server.name, member.name), save=True)
- if int(time.time()) - info['last_update'] > 60:
- if member.voice is not None:
- db_cursor.execute("UPDATE `users` SET balance = {}, experience = {}, last_update = {} WHERE (user_id = '{}' AND server_id = '{}')".format(
- info['balance'] + self.gold_per_minut,
- info['experience'] + self.exp_per_minut,
- time.time(),
- member.id,
- server.id))
- db_conn.commit()
- self.log('[%s] Updated balance, experience for user: %s ' % (server.name, member.name), save=True)
- if len(member_role) != 0:
- if not info['member'] and info['experience'] >= member_role[1]:
- role_o = discord.utils.get(server.roles, id=int(member_role[0]))
- if role_o not in member.roles:
- self.bot.loop.create_task(member.add_roles(role_o))
- db_cursor.execute("UPDATE `users` SET member = {} WHERE (user_id = '{}' AND server_id = '{}')".format(True, member.id, server.id))
- db_conn.commit()
- new_role = ''
- for role in roles:
- if role[1] <= info['experience']:
- new_role = role[0]
- if new_role != '' and new_role != info['autorole']:
- if info['autorole'] != '0':
- role_o = discord.utils.get(server.roles, id=int(info['autorole']))
- if role_o in member.roles:
- self.bot.loop.create_task(member.remove_roles(role_o))
- self.log('[%s] For user %s deleted old role %s(%s)' % (
- server.name,
- member.name,
- role_o.name,
- role_o.id) , save=True)
- time.sleep(2)
- role_o = discord.utils.get(server.roles, id=int(new_role))
- if role_o is not None:
- if role_o not in member.roles:
- db_cursor.execute("UPDATE `users` SET autorole = '{}' WHERE (user_id = '{}' AND server_id = '{}')".format(new_role, member.id, server.id))
- db_conn.commit()
- self.bot.loop.create_task(member.add_roles(role_o))
- self.log('[%s] For user %s added role %s(%s)' % (server.name, member.name, role_o.name, role_o.id), save=True)
- db_conn.close()
Advertisement
Add Comment
Please, Sign In to add comment