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('SLACK_BOT_TOKEN') SLACK_CHANNEL_ID = os.getenv('SLACK_CHANNEL_ID') TRIGGERS = { "discord bot": "<@U061W3NRFFA>", "setfit": "tom aarsen", "cv": "merve", } 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 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, message.jump_url, slack_mention) break async def post_to_slack(author, content, channel, url, slack_mention): try: response = slack_client.chat_postMessage( channel=SLACK_CHANNEL_ID, text=f"{slack_mention} Discord message by {author} in {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()