Advertisement
yasi04

Untitled

Apr 3rd, 2024
497
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.87 KB | None | 0 0
  1. import disnake
  2. import sqlite3
  3. from disnake.ext import commands
  4.  
  5.  
  6. bot = commands.Bot(command_prefix="!", help_command=None, intents=disnake.Intents.all())
  7.  
  8. conn = sqlite3.connect('main.db')
  9. c = conn.cursor()
  10.  
  11.  
  12. @bot.event
  13. async def on_ready():
  14.     print(f"Bot {bot.user} is ready to work!")
  15.  
  16.     c.execute("""CREATE TABLE IF NOT EXISTS users (
  17.        name TEXT,
  18.        score BIGINT,
  19.        wins INTEGER,
  20.        loses INTEGER,
  21.        winrate TEXT
  22.    )""")
  23.  
  24.     conn.commit()
  25.  
  26.     for guild in bot.guilds:
  27.         for member in guild.members:
  28.             if c.execute(f"SELECT name FROM users WHERE name = '{member}'").fetchone() is None:
  29.                 c.execute(f"INSERT INTO users VALUES ('{member}', 0, 0, 0, '0')")
  30.             else:
  31.                 pass
  32.     c.execute
  33.  
  34.     conn.commit()
  35.     print('client connected')
  36.  
  37.  
  38. @bot.slash_command(name='counter', description='Add win\lose')
  39. async def addwinlose(ctx, user: disnake.User, score: int, winlose: str = commands.Param(choices=['Win', 'Lose'])):
  40.     allowed_role = ctx.guild.get_role("1224836480531169474")
  41.     if allowed_role in ctx.author.roles:
  42.         c.execute("SELECT wins, loses, score FROM users WHERE name=?", (f'{user}',))
  43.         wins, loses, score = c.fetchone()
  44.         if winlose == "Win":
  45.             modifier = 1 + score / (wins + 1)
  46.             winrate = (((wins + 1) * modifier) / ((wins + 1) + loses))
  47.             c.execute("UPDATE users SET wins=wins+1, score=score+?, winrate=? WHERE name=?", (score, f'{winrate}', f'{user}'))
  48.         else:
  49.             modifier = 1 + score / wins
  50.             winrate = ((wins * modifier) / (wins + (loses + 1)))
  51.             c.execute("UPDATE users SET loses=loses+1, score=score+?, winrate=? WHERE name=?", (score, f'{winrate}', f'{user}'))
  52.         c.execute("SELECT score FROM users WHERE name=?", (f'{user}',))
  53.         new_score = c.fetchone[0]
  54.         await ctx.send(f'User {user} got {score} score points and now have {new_score}')
  55.     else:
  56.         await ctx.send("You do not have permissions to use this command.")
  57.     conn.commit()
  58.  
  59.  
  60. @bot.slash_command(name='info', description='Show user info')
  61. async def info(ctx, user: disnake.User):
  62.     allowed_role = ctx.guild.get_role("1224836480531169474")
  63.     if allowed_role in ctx.author.roles:
  64.         c.execute("SELECT wins, loses, score, winrate FROM users WHERE name=?", (f'{user}',))
  65.         wins, loses, score, winrate = c.fetchone()
  66.  
  67.         embed = disnake.Embed(
  68.             title=f"Info about {user}",
  69.             description=f"Score: {score}\Wins: {wins}\Loses: {loses}\nWinrate: {winrate}",
  70.             color=0x00ff00
  71.         )
  72.  
  73.         await ctx.send(embed=embed)
  74.     else:
  75.         await ctx.send("You do not have permissions to use this command.")
  76.     conn.commit()
  77.  
  78.  
  79. @bot.slash_command(name='top10', description='Show top 10 users')
  80. async def showtop10(ctx):
  81.     allowed_role = ctx.guild.get_role("1224836480531169474")
  82.     if allowed_role in ctx.author.roles:
  83.         top10 = {}
  84.         c.execute("SELECT name FROM users")
  85.         names = c.fetchall()
  86.         for name in names:
  87.             c.execute("SELECT winrate FROM users WHERE name=?", (f'{name}',))
  88.             top10[name] = c.fetchone()[0]
  89.         sort_top10 = dict(sorted(top10.items(), key=lambda x: x[1], reverse=True))
  90.         for item in sort_top10:
  91.             top1 = item
  92.             break
  93.         embed = disnake.Embed(
  94.             title=f"Top 10 users",
  95.             description=f"1) {top1}: {sort_top10[top1]}",
  96.             color=0x00ff00
  97.         )
  98.         del sort_top10[top1]
  99.         count = 2
  100.         for item in sort_top10:
  101.             if count != 10:
  102.                 embed.add_field(value=f"{count}) {item}: {sort_top10[item]}", inline=False)
  103.         await ctx.send(embed=embed)
  104.     else:
  105.         await ctx.send("You do not have permissions to use this command.")
  106.     conn.commit()
  107.  
  108.  
  109. bot.run('TOKEN')
  110.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement