lunarflu's picture
lunarflu HF staff
Update app.py
71bd8ed verified
raw
history blame
3.21 kB
import discord
import threading
import os
import gradio as gr
from discord.ext import commands
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
DISCORD_TOKEN = os.getenv('DISCORD_TOKEN')
SLACK_BOT_TOKEN = os.getenv('BOT_USER_OAUTH_TOKEN_HF')
SLACK_CHANNEL_ID = os.getenv('SLACK_CHANNEL_ID_HF')
TRIGGERS = {
"discord bot": "<@U051DB2754M>", # Adam
"text to speech": "<@U039C2GANMV>", # VB
"tts": "<@U039C2GANMV>", # VB
"asr": "<@U039C2GANMV>", # VB
"musicgen": "<@U039C2GANMV>", # VB
"whisper": "<@U039C2GANMV>", # VB
"speech recognition": "<@U039C2GANMV>", # VB
"bark": "<@U039C2GANMV>", # VB
"autotrain": "<@U01E3LEC2N7>", # abhishek
"sentence-transformers": "<@U04E4DNPWG7>", # tom aarsen
"sentence_transformers": "<@U04E4DNPWG7>", # tom aarsen
"setfit": "<@U04E4DNPWG7>", # tom aarsen
"sentence transformers": "<@U04E4DNPWG7>", # tom aarsen
}
intents = discord.Intents.all()
intents.messages = True
bot = commands.Bot(command_prefix='!', intents=intents)
slack_client = WebClient(token=SLACK_BOT_TOKEN)
@bot.event
async def on_ready():
print(f'Logged in as {bot.user}')
@bot.event
async def on_message(message):
if message.author == bot.user:
return
# notification bot
content = message.content.lower()
for trigger, slack_mention in TRIGGERS.items():
if trigger in content:
await post_to_slack(message.author, message.content, message.channel.name, message.jump_url, slack_mention, trigger)
break
# ask-for-help
# discord.ForumChannel.last_message_id -> The last thread ID that was created on this forum.
# when message is posted
# fetch ask-for-help channel
# if ask-for-help.last_message_id == message.id of on_message -> success
ask_for_help = await bot.fetch_channel(1019883044724822016)
if ask_for_help.last_message_id == message.channel.id:
content = message.content
try:
# title
response = slack_client.chat_postMessage(
channel=SLACK_CHANNEL_ID,
text=f"New post in #ask-for-help by {message.author}:*{message.channel.name}*"
)
# reply in thread
thread_ts = response['ts']
slack_client.chat_postMessage(
channel=SLACK_CHANNEL_ID,
text=content,
thread_ts=thread_ts
)
except SlackApiError as e:
print(f"Error posting to Slack: {e.response['error']}")
async def post_to_slack(author, content, channel, url, slack_mention, trigger):
try:
response = slack_client.chat_postMessage(
channel=SLACK_CHANNEL_ID,
text=f"{slack_mention} (for the keyword -> '{trigger}')\nFrom {author} in channel #{channel}: {content}\n{url}"
)
except SlackApiError as e:
print(f"Error posting to Slack: {e.response['error']}")
# 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()