Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @bot.event
- async def on_message(message):
- t = open("storage/users.json", "r")
- users = json.load(t)
- if message.author.bot:
- return
- if message.channel.is_private:
- return
- else:
- await update_data(users, message.author)
- number = random.randint(5,10)
- await add_experience(users, message.author, number)
- await level_up(users, message.author, message.channel)
- with open("storage/users.json", "w") as f:
- json.dump(users, f)
- await bot.process_commands(message)
- async def update_data(users, user):
- if not user.id in users:
- users[user.id] = {}
- users[user.id]["xp"] = 0
- users[user.id]["level"] = 1
- users[user.id]["last_message"] = 0
- async def add_experience(users, user, exp):
- if time.time() - users[user.id]["last_message"] > 30:
- users[user.id]["xp"] += exp
- users[user.id]["last_message"] = time.time()
- print("player {}/{} gained {} xp".format(user.name, user.id, exp))
- else:
- return
- async def level_up(users, user, channel):
- experience = users[user.id]["xp"]
- lvl_start = users[user.id]["level"]
- lvl_end = int(experience ** (1/4))
- if lvl_start < lvl_end:
- await bot.send_message(channel, ":tada: Congrats {}, you levelled up to level {}!".format(user.mention, lvl_end))
- users[user.id]["level"] = lvl_end
- print("player {}/{} leveled up with {} xp".format(user.name, user.id, experience))
- @bot.command(pass_context=True)
- async def leaderboard(ctx):
- t = open("storage/users.json", "r")
- users = json.load(t)
- experience = users[ctx.message.author.id]["xp"]
- lvl_start = users[ctx.message.author.id]["level"]
- high_score_list = sorted(users, key=lambda x : users[x].get('xp', 0), reverse=True)
- embed=discord.Embed(title='Leaderboard', description='Leaderboard for {}'.format(ctx.message.server.name), color=0xff00f6)
- for number, user in enumerate(high_score_list):
- embed.add_field(name='{}.'.format(number + 1), value='{0} with {1}xp\n'.format(ctx.message.author.server.get_member(user), users[user].get('xp', 0)), inline=False)
- await bot.send_message(ctx.message.channel, embed=embed)
- @bot.command(pass_context=True)
- async def about(ctx):
- servers = bot.servers
- members = bot.get_all_members()
- messages = bot.messages
- channels = bot.get_all_channels()
- embed=discord.Embed(title='Bot information', description='[Support Server Invite](https://discord.gg/hGaayXq)', color=0xff00f6)
- embed.set_author(name=ctx.message.author.name, icon_url=ctx.message.author.avatar_url)
- embed.add_field(name='Servers', value=f'Currently in {str(len(servers))} servers.')
- embed.add_field(name='Online Users', value=str(len({m.id for m in bot.get_all_members() if m.status is not discord.Status.offline})))
- embed.add_field(name='Total Users', value=str(len({m.id for m in bot.get_all_members()})))
- embed.add_field(name='Channels', value=f"{sum(1 for g in bot.servers for _ in g.channels)}")
- embed.add_field(name="Library", value=f"discord.py")
- embed.add_field(name="Invite", value=f"[Click Here](https://discordapp.com/oauth2/authorize?client_id={bot.user.id}&scope=bot&permissions=268905542)")
- embed.add_field(name="Upvote this bot!", value=f"[Click here](https://discordbots.org/bot/{bot.user.id}) :reminder_ribbon:")
- embed.set_footer(text="BaguetteBot | By AlexOp")
- await bot.say(embed=embed)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement