Оптимизируй код
import os
import random
import json
import discord
import operator
import datetime
from discord.ext import commands
from operator import itemgetter
from datetime import datetime, timedelta

bot = commands.Bot(command_prefix='!', intents=discord.Intents.all())
bot.remove_command("help")

#Отвечает за создание файла dk.txt
try:
    with open("dk.txt", "r") as f:
        data = json.load(f)
except json.decoder.JSONDecodeError:
    data = {}
    with open("dk.txt", "w") as f:
        json.dump(data, f)
except FileNotFoundError:
    data = {}
    with open("dk.txt", "w") as f:
        json.dump(data, f)

# Надо доделать
@bot.command()
async def help(ctx):
    embed = discord.Embed(title="Help", description="**Список команд:**", color=0x0000ff)
    embed.add_field(name="!dick", value="Случайным образом увеличивает ваш дик от -5 до 10см", inline=False)
    embed.add_field(name="!top", value="Показывает топ 10 по см на сервере", inline=False)
    embed.add_field(name="!stats", value="Показывает вашу статистику", inline=False)
    await ctx.send(embed=embed)

# Тестовая команда
@bot.command()
async def ping(ctx):
    await ctx.send('pong')

# Самое важное, лучше ничего не трогать
@bot.command()
async def dick(ctx):
    with open("dk.txt", "r") as f:
        data = json.load(f)
        # Проверка есть ли пользователь в dk.txt
    if str(ctx.author.id) not in data:
        data[str(ctx.author.id)] = {"dk": 0, "last_used": datetime.now().strftime("%Y-%m-%d %H:%M:%S")}
    else:
        # Прововеряет когда пользователь последний раз использовал команду
        last_used = datetime.strptime(data[str(ctx.author.id)]["last_used"], "%Y-%m-%d %H:%M:%S")
        if last_used + timedelta(hours=8) > datetime.now():
            time_left = last_used + timedelta(hours=8) - datetime.now()
            await ctx.send(f"Ты уже использовал данную команду. Твой писюн {data[str(ctx.author.id)]['dk']} см")
            return
        # Рандом
    data[str(ctx.author.id)]["last_used"] = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    with open("dk.txt", "w") as f:
        json.dump(data, f)
    roll = random.randint(-5, 10)
    while roll == 0:
        roll = random.randint(-5, 10)
    data[str(ctx.author.id)]["dk"] += roll
    with open("dk.txt", "w") as f:
        json.dump(data, f)
        # Эмбед
    if roll > 0:
        message = "Ваш писюн увеличился на {} см. Сейчас длина Вашего писюна составляет {} см.".format(roll, data[str(ctx.author.id)]["dk"])
    elif roll < 0:
        message = "Ваш писюн уменьшился на {} см. Сейчас длина Вашего писюна составляет {} см.".format(abs(roll), data[str(ctx.author.id)]["dk"])
    Embed = discord.Embed(title="DK", description=message)
    await ctx.send(embed=Embed)

# Серверный топ
@bot.command()
async def top(ctx):
    with open("dk.txt", "r") as f:
        data = json.load(f)
    members_on_server = [member.id for member in ctx.guild.members]
    top_dk = [item for item in sorted(data.items(), key=lambda x: x[1]["dk"], reverse=True) if int(item[0]) in members_on_server][:15]
    top_dk_str = '\n'.join(['{}. {} = {} см'.format(i+1, ctx.guild.get_member(int(x[0])).display_name.split("#")[0], x[1]["dk"]) for i, x in enumerate(top_dk)])
    embed = discord.Embed(title="Топ Дик", description=top_dk_str)
    await ctx.send(embed=embed)

# Личная статистика пользователя(Доделать если не лень)
@bot.command()
async def stats(ctx):
    with open("dk.txt", "r") as f:
        data = json.load(f)
    
    # Сортировка всех игроков по их сантиметрам
    all_players = sorted(data.items(), key=lambda x: x[1]["dk"], reverse=True)
    
    # Тут ищется первое место и место пользователя в глобальном топе
    user_id = str(ctx.author.id)
    for i, (player_id, player_data) in enumerate(all_players):
        if player_id == user_id:
            global_rank = i + 1
            user_dk = player_data["dk"]
            break
    else:
        return await ctx.send("Твоя статистика:")
    
    # Тут ебаная математика нахуй
    first_place_dk = all_players[0][1]["dk"]
    dk_difference = first_place_dk - user_dk
    
    # Сортировка игроков по сантиметрам на сервере
    server_players = [(ctx.guild.get_member(int(player_id)), player_data) for player_id, player_data in data.items() if ctx.guild.get_member(int(player_id))]
    server_players = sorted(server_players, key=lambda x: x[1]["dk"], reverse=True)
    
    # Тута ищется место игрока в топе сервера
    for i, (player, player_data) in enumerate(server_players):
        if player.id == ctx.author.id:
            server_rank = i + 1
            break
    
    # Эмбед
    embed = discord.Embed(title="Status", description="Твоя статистика:", color=0x8b00ff)
    embed.add_field(name="Глобал топ", value=global_rank, inline=True)
    embed.add_field(name="Сантиметры", value=user_dk, inline=True)
    embed.add_field(name="Осталось до №1", value=dk_difference, inline=True)
    embed.add_field(name="Сервер топ", value=server_rank, inline=True)
    
    await ctx.send(embed=embed)

@bot.command()
async def ananas(ctx):
    ananas_images = os.listdir('ananas')
    ananas_image = random.choice(ananas_images)
    embed = discord.Embed(title='Ананас', color=0x00ff00)
    embed.set_image(url=f'attachment://{ananas_image}')
    await ctx.send(file=discord.File(f'ananas/{ananas_image}'), embed=embed)

@bot.command()
async def ананас(ctx):
    ananas_images = os.listdir('ananas')
    ananas_image = random.choice(ananas_images)
    embed = discord.Embed(title='Ананас', color=0x00ff00)
    embed.set_image(url=f'attachment://{ananas_image}')
    await ctx.send(file=discord.File(f'ananas/{ananas_image}'), embed=embed)

@bot.command()
async def дом(ctx):
    ananas_images = os.listdir('hom')
    ananas_image = random.choice(ananas_images)
    embed = discord.Embed(title='Дом', color=0xff0000)
    embed.set_image(url=f'attachment://{ananas_image}')
    await ctx.send(file=discord.File(f'hom/{ananas_image}'), embed=embed)
bot.run