Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
File size: 4,216 Bytes
a5603d3 7187a61 a5603d3 0aa83ad ee7844e 7187a61 a5603d3 7187a61 0aa104b a5603d3 6c5f294 714224b 6c5f294 0aa83ad ee7844e 0aa83ad 6c5f294 714224b 6c5f294 714224b 8010cdb 714224b 6c5f294 8010cdb 714224b 6c5f294 7187a61 79a1edd 6c5f294 0aa104b 714224b 0aa104b 79a1edd 6c5f294 79a1edd 6c5f294 3b06990 6c5f294 3b06990 6c5f294 3b06990 79a1edd 7187a61 0aa104b 7187a61 0aa104b |
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 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
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)
MY_GUILD_ID = 879548962464493619
class Bot(commands.Bot):
"""This structure allows slash commands to work instantly."""
def __init__(self):
super().__init__(command_prefix="/", intents=discord.Intents.all())
async def setup_hook(self):
await self.tree.sync(guild=discord.Object(MY_GUILD_ID))
print(f"Synced slash commands for {self.user}.")
bot = Bot()
XP_PER_MESSAGE = 10
xp_data = {}
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):
global xp_data
if message.author.bot:
return
if message.author.id not in xp_data:
xp_data[message.author.id] = 0
old = xp_data[message.author.id]
new = old + XP_PER_MESSAGE
xp_data[message.author.id] = new
level = calculate_level(new)
print(f"{message.author.mention} xp: {xp_data[message.author.id]}")
print(f"{message.author.mention} level: {level}")
save_xp_data(xp_data)
def calculate_level(xp):
return int(xp ** (1.0 / 3.0)) # 100k messages = lvl 100, good for super long term plan
@bot.command()
async def level(ctx):
try:
global xp_data
print(ctx.author.id)
print(ctx.author.mention)
if ctx.author.id == 811235357663297546: # lunarflu
if ctx.author.id in xp_data:
xp = xp_data[ctx.author.id]
level = calculate_level(xp)
await ctx.send(f'You are at level {level} with {xp} total XP.')
# progress bar with ascii? could be nice, easy
else:
await ctx.send('You have not earned any XP yet.')
except Exception as e:
print(f"Error: {e}")
@bot.command()
async def plot_xp(ctx):
if ctx.author.id == 811235357663297546:
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):
if ctx.author.id == 811235357663297546:
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.')
@bot.command()
async def load_xp(ctx):
if ctx.author.id == 811235357663297546:
try:
xp_data.clear() # Clear current XP data
with open('xp_data.json', 'r') as f:
loaded_data = json.load(f)
xp_data.update(loaded_data) # Update with loaded data
await ctx.send('XP data has been loaded from the file.')
except FileNotFoundError:
await ctx.send('No XP data file found.')
""""""
def run_bot():
client.run(DISCORD_TOKEN)
threading.Thread(target=run_bot).start()
"""This allows us to run the Discord bot in a Python thread"""
with gr.Blocks() as demo:
gr.Markdown("""
# Huggingbots Server
This space hosts the huggingbots discord bot.
Currently supported models are Falcon and DeepfloydIF
""")
demo.queue(concurrency_count=100)
demo.queue(max_size=100)
demo.launch() |