Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
File size: 3,352 Bytes
cf1e692 7187a61 cf1e692 6d949e0 7187a61 a5603d3 7187a61 cf1e692 a5603d3 6c5f294 cf1e692 80a1e02 cf1e692 6c5f294 0aa83ad 6b5ae25 ebbf773 6d949e0 cf1e692 6d949e0 cf1e692 0aa83ad cf1e692 6c5f294 6d949e0 cf1e692 6d949e0 cf1e692 80a1e02 cf1e692 3ad4cda 49abc96 3ad4cda cf1e692 6d949e0 6c5f294 cf1e692 6b5ae25 7187a61 79a1edd cf1e692 6c5f294 3c44710 b46ad23 c7ed7f7 cf1e692 8a13292 3c44710 b46ad23 3c44710 b46ad23 c7ed7f7 cf1e692 6d949e0 cf1e692 7187a61 cf1e692 |
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 |
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 # 100k messages = 1M exp = lvl 100
""""""
@bot.event
async def on_ready():
print(f'Logged in as {bot.user.name}')
print(f"XP_PER_MESSAGE: {XP_PER_MESSAGE}")
print(f"xp_data: {xp_data}")
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:
"""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
print(f"xp_data: {xp_data}")
save_xp_data()
user = bot.get_user(811235357663297546)
try:
await user.send(f" {message.content} xp_data: {xp_data}")
except discord.HTTPException:
await ctx.send("Failed to send a DM.")
await bot.process_commands(message)
except Exception as e:
print(f"Error: {e}")
def calculate_level(xp):
return int(xp ** (1.0 / 3.0))
@bot.command()
async def level(ctx):
if ctx.author.id == 811235357663297546:
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.')
# show top users by level / exp
@bot.command()
async def count(ctx):
"""Count total messages per user in all channels."""
if ctx.author.id == 811235357663297546:
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}")
print(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[:50]])
#await ctx.send(f"Message count per user in all text channels:\n{top_list}")
print(f"Message count per user in all text channels:\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() |