File size: 2,407 Bytes
78dea1a
db21dc3
434f798
db21dc3
b0918e1
78dea1a
b7eca85
 
ad9d692
8dd1108
676f51e
ad9d692
cbe51b9
 
c6565e2
b7eca85
773ec73
 
78dea1a
b7eca85
09d6ac2
773ec73
 
b80bf81
d3ba82c
78dea1a
 
773ec73
 
 
 
90c7959
773ec73
 
3c830fa
773ec73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c6565e2
 
d4ce55b
c6565e2
 
 
db21dc3
 
 
b3ba3b3
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
import discord
import threading
import os
import gradio as gr
import time
from discord.ext import commands
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
import aiojobs
import asyncio
import re
from datetime import datetime, timedelta
from apscheduler.executors.pool import ThreadPoolExecutor
from apscheduler.schedulers.background import BackgroundScheduler


DISCORD_TOKEN = os.environ.get("DISCORD_TOKEN", None)
intents = discord.Intents.all() 
bot = commands.Bot(command_prefix='!', intents=intents)


global_df = pd.DataFrame()
test_merge = pd.read_csv("https://docs.google.com/spreadsheets/d/1C8aLqgCqLYcMiIFf-P_Aosaa03C_WLIB_UyqvjSdWg8/export?format=csv&gid=0")


@bot.event
async def on_ready():
    global global_df
    """import data from google sheets -> HF Space df (doesn't make API call this way, as it's read-only)""" 
    global_df = test_merge
    print(f"csv successfully retrieved: \n {global_df}")

@tasks.loop(seconds=10)
async def give_verified_roles():
    try:
        global global_df
        guild = bot.get_guild(879548962464493619)
        role = guild.get_role(900063512829755413)
        org_link = "https://huggingface.co/organizations/discord-community/share/wPKRAHYbAlaEaCxUxcqVyaaaeZcYagDvqc"
        invite_message = "Click to join our community org on the HF Hub!"
        await guild.chunk()
        for index, row in global_df.iterrows():
            hf_user_name = row['hf_user_name']
            if pd.notna(hf_user_name) and hf_user_name.lower() != 'n/a':
                discord_id = row['discord_user_id'].strip('L')
                member = guild.get_member(int(discord_id))
                if not member:
                    continue
                if role not in member.roles:
                    await member.add_roles(role)
                    lunar = bot.get_user(811235357663297546)
                    await lunar.send(f"Verified role given to {member}!") 
                    await member.send(f"Verification successful! [{member} <---> {row['discord_user_name']}] \n🤗 {org_link} {invite_message}") 
    except Exception as e:
        print(f"Error: {e}")


# runs discord bot in thread = helps avoid blocking calls
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()