Spaces:
Runtime error
Runtime error
File size: 2,611 Bytes
a5603d3 7187a61 a5603d3 0aa83ad ee7844e 7187a61 a5603d3 7187a61 a5603d3 0aa83ad 369bea2 ee7844e 0aa83ad ee7844e 0aa83ad a5603d3 ee7844e b7da67d 0aa83ad b7da67d 0aa83ad 369bea2 0aa83ad 74bc7fc b7da67d ee7844e 3d250f7 c67eb35 ee7844e 74bc7fc 7187a61 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
import discord
import os
import threading
from discord.ext import commands
import json
import time
import matplotlib.pyplot as plt
from io import BytesIO
import gradio_client
import gradio as gr
from gradio_client import Client
DISCORD_TOKEN = os.environ.get("DISCORD_TOKEN", None)
intents = discord.Intents.all()
bot = commands.Bot(command_prefix='!', intents=intents)
XP_PER_MESSAGE = 10
def load_xp_data():
try:
with open('xp_data.json', 'r') as f:
return json.load(f)
except FileNotFoundError:
return {}
def save_xp_data(xp_data):
with open('xp_data.json', 'w') as f:
json.dump(xp_data, f)
@bot.event
async def on_ready():
print(f'Logged in as {bot.user.name}')
@bot.event
async def on_message(message):
if message.author.bot:
return
author_id = str(message.author.id)
xp_data.setdefault(author_id, [])
timestamp = int(time.time())
xp_data[author_id].append((timestamp, XP_PER_MESSAGE))
save_xp_data(xp_data)
await bot.process_commands(message)
def calculate_level(xp):
return int(xp ** (1.0 / 3.0))
@bot.command()
async def level(ctx):
author_id = str(ctx.author.id)
if author_id in xp_data:
total_xp = sum(xp for _, xp in xp_data[author_id])
level = calculate_level(total_xp)
await ctx.send(f'You are at level {level} with {total_xp} total XP.')
else:
await ctx.send('You have not earned any XP yet.')
@bot.command()
async def plot_xp(ctx):
author_id = str(ctx.author.id)
if author_id in xp_data:
timestamps, xp_values = zip(*xp_data[author_id])
plt.plot(timestamps, xp_values)
plt.xlabel('Timestamp')
plt.ylabel('XP')
plt.title('XP Over Time')
image_stream = BytesIO()
plt.savefig(image_stream, format='png')
plt.close()
image_stream.seek(0)
await ctx.send(file=discord.File(fp=image_stream, filename='xp_graph.png'))
else:
await ctx.send('You have not earned any XP yet.')
@bot.command()
async def show_xp_data(ctx):
author_id = str(ctx.author.id)
if author_id in xp_data:
xp = xp_data[author_id]
await ctx.send(f'Your XP data: {xp}')
else:
await ctx.send('You have not earned any XP yet.')
""""""
DISCORD_TOKEN = os.environ.get("DISCORD_TOKEN", None)
def run_bot():
bot.run(DISCORD_TOKEN)
threading.Thread(target=run_bot).start()
def greet(name):
return "Hello " + name + "!"
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch() |