Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
File size: 4,175 Bytes
a5603d3 0aa83ad a5603d3 0aa83ad 74bc7fc 0aa83ad b7da67d a5603d3 e0a3c9b 0aa83ad a5603d3 0aa83ad b7da67d 0aa83ad b7da67d 0aa83ad 74bc7fc b7da67d 6b1849e b7da67d 74bc7fc a2fddd1 3d250f7 a2fddd1 3d250f7 c111c5d 3d250f7 a2fddd1 3d250f7 c67eb35 3fd31a9 6fdc6ae 2ec35fc 6fdc6ae 3fd31a9 c67eb35 3fd31a9 3d250f7 74bc7fc 0aa83ad a5603d3 |
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 165 166 167 168 |
import discord
import os
import threading
from discord.ext import commands
import json
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
""""""
@bot.event
async def on_ready():
print(f'Logged in as {bot.user.name}')
try:
with open('xp_data.json', 'r') as f:
xp_data = json.load(f)
except FileNotFoundError:
xp_data = {}
def save_xp_data():
with open('xp_data.json', 'w') as f:
json.dump(xp_data, f)
@bot.event
async def on_message(message):
try:
#if message.author != bot.user: # disabling this means we can track bot usage over time
"""AWAIT LEVEL ALGORITM OR SOMETHING (MULTIPLE FILES?)"""
author_id = str(message.author.id) # dictionary pairs (ID -> TOTAL XP)
xp_data.setdefault(author_id, 0) # default if it doesn't already exist
xp_data[author_id] += XP_PER_MESSAGE
save_xp_data()
await bot.process_commands(message)
except Exception as e:
print(f"Error: {e}")
# Calculate the level based on XP
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:
xp = xp_data[author_id]
level = calculate_level(xp)
await ctx.send(f'You are at level {level} with {xp} XP.')
else:
await ctx.send('You have not earned any XP yet.')
@bot.command()
async def backup_xp(ctx):
#save_xp_data()
with open('xp_data.json', 'rb') as f:
await ctx.send(file=discord.File(f, 'xp_data.json'))
@bot.command()
async def count_messages(ctx, channel_name: str):
"""Count messages per user in a specific channel."""
channel = discord.utils.get(ctx.guild.text_channels, name=channel_name)
if not channel:
await ctx.send("Channel not found.")
return
message_counts = {}
async for message in channel.history(limit=None):
#if not message.author.bot:
message_counts[message.author] = message_counts.get(message.author, 0) + 1
sorted_users = sorted(message_counts.items(), key=lambda x: x[1], reverse=True)
top_list = "\n".join([f"{member.name}: {count}" for member, count in sorted_users])
await ctx.send(f"Message count per user in #{channel_name}:\n{top_list}")
@bot.command()
async def count(ctx):
"""Count messages per user in a specific channel."""
message_counts = {}
for channel in ctx.guild.text_channels:
try:
async for message in channel.history(limit=None):
message_counts[message.author] = message_counts.get(message.author, 0) + 1
except discord.Forbidden:
# Handle the Forbidden error
await ctx.send(f"Missing access to read messages in {channel.name}")
sorted_users = sorted(message_counts.items(), key=lambda x: x[1], reverse=True)
top_list = "\n".join([f"{member.name}: {count}" for member, count in sorted_users])
await ctx.send(f"Message count per user in all text channels:\n{top_list}")
"""
channel = ctx.channel
if not channel:
await ctx.send("Channel not found.")
return
message_counts = {}
async for message in channel.history(limit=None):
#if not message.author.bot:
message_counts[message.author] = message_counts.get(message.author, 0) + 1
sorted_users = sorted(message_counts.items(), key=lambda x: x[1], reverse=True)
top_list = "\n".join([f"{member.name}: {count}" for member, count in sorted_users])
await ctx.send(f"Message count per user:\n{top_list}")
"""
""""""
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() |