File size: 2,964 Bytes
78dea1a
db21dc3
434f798
db21dc3
78dea1a
b7eca85
 
 
4b7b722
56509cf
 
b7eca85
 
a368445
d448043
 
 
 
 
 
 
 
 
 
 
 
b7eca85
 
78dea1a
 
 
b7eca85
75d2f81
b7eca85
78dea1a
 
 
b7eca85
78dea1a
 
 
 
b7eca85
9177836
78dea1a
b7eca85
78dea1a
a368445
b7eca85
 
9177836
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a368445
b7eca85
 
78dea1a
9e52f3a
b7eca85
 
 
 
d4ce55b
db21dc3
 
 
 
 
 
 
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
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
    if message.channel.id == 1019883044724822016:
        title = message.embeds[0].title if message.embeds else "No Title"
        content = message.content

        try:
            # title
            response = slack_client.chat_postMessage(
                channel=SLACK_CHANNEL,
                text=f"New post in {message.channel.name} by {message.author}:\n*{title}*"
            )
            # reply in thread
            thread_ts = response['ts']
            slack_client.chat_postMessage(
                channel=SLACK_CHANNEL,
                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()