Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
testing daily pings
Browse files
app.py
CHANGED
@@ -5,6 +5,8 @@ import gradio as gr
|
|
5 |
from discord.ext import commands
|
6 |
from slack_sdk import WebClient
|
7 |
from slack_sdk.errors import SlackApiError
|
|
|
|
|
8 |
|
9 |
DISCORD_TOKEN = os.getenv('DISCORD_TOKEN')
|
10 |
SLACK_BOT_TOKEN = os.getenv('BOT_USER_OAUTH_TOKEN_HF')
|
@@ -12,6 +14,7 @@ SLACK_BOT_TOKEN = os.getenv('BOT_USER_OAUTH_TOKEN_HF')
|
|
12 |
# real = os.getenv('SLACK_CHANNEL_ID_HF')
|
13 |
# test = 'C07B4KNU5BQ'
|
14 |
SLACK_CHANNEL_ID = os.getenv('SLACK_CHANNEL_ID_HF')
|
|
|
15 |
# 1259415803879751700 = test forum
|
16 |
# 1019883044724822016 = ask for help
|
17 |
ASK_FOR_HELP_CHANNEL_ID = 1019883044724822016
|
@@ -42,6 +45,8 @@ TRIGGERS = {
|
|
42 |
("dataset", "feedback"): "<@U0768RCHCRY>", # ben burtenshaw
|
43 |
}
|
44 |
|
|
|
|
|
45 |
intents = discord.Intents.all()
|
46 |
intents.messages = True
|
47 |
bot = commands.Bot(command_prefix='!', intents=intents)
|
@@ -64,13 +69,20 @@ async def on_message(message):
|
|
64 |
# notification bot
|
65 |
huggingfolks_role = discord.utils.get(message.guild.roles, id=897376942817419265)
|
66 |
bots_role = discord.utils.get(message.guild.roles, id=1258328471609016341)
|
67 |
-
if huggingfolks_role not in message.author.roles: # no need for ping if we're already discussing
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
|
75 |
# Check if the message is in a thread
|
76 |
if isinstance(message.channel, discord.Thread):
|
@@ -127,8 +139,27 @@ def post_to_slack_create_thread(channel, text, thread_ts=None):
|
|
127 |
print(f"Error posting to Slack: {e.response['error']}")
|
128 |
return None
|
129 |
|
130 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
|
|
|
132 |
|
133 |
async def post_to_slack(author, content, channel, url, slack_mention, trigger):
|
134 |
try:
|
@@ -142,6 +173,7 @@ async def post_to_slack(author, content, channel, url, slack_mention, trigger):
|
|
142 |
|
143 |
# runs discord bot in thread = helps avoid blocking calls
|
144 |
def run_bot():
|
|
|
145 |
bot.run(DISCORD_TOKEN)
|
146 |
threading.Thread(target=run_bot).start()
|
147 |
def greet(name):
|
|
|
5 |
from discord.ext import commands
|
6 |
from slack_sdk import WebClient
|
7 |
from slack_sdk.errors import SlackApiError
|
8 |
+
import aiojobs
|
9 |
+
from datetime import datetime, timedelta
|
10 |
|
11 |
DISCORD_TOKEN = os.getenv('DISCORD_TOKEN')
|
12 |
SLACK_BOT_TOKEN = os.getenv('BOT_USER_OAUTH_TOKEN_HF')
|
|
|
14 |
# real = os.getenv('SLACK_CHANNEL_ID_HF')
|
15 |
# test = 'C07B4KNU5BQ'
|
16 |
SLACK_CHANNEL_ID = os.getenv('SLACK_CHANNEL_ID_HF')
|
17 |
+
SLACK_CHANNEL_ID_TEST = 'C07B4KNU5BQ'
|
18 |
# 1259415803879751700 = test forum
|
19 |
# 1019883044724822016 = ask for help
|
20 |
ASK_FOR_HELP_CHANNEL_ID = 1019883044724822016
|
|
|
45 |
("dataset", "feedback"): "<@U0768RCHCRY>", # ben burtenshaw
|
46 |
}
|
47 |
|
48 |
+
daily_pings = []
|
49 |
+
|
50 |
intents = discord.Intents.all()
|
51 |
intents.messages = True
|
52 |
bot = commands.Bot(command_prefix='!', intents=intents)
|
|
|
69 |
# notification bot
|
70 |
huggingfolks_role = discord.utils.get(message.guild.roles, id=897376942817419265)
|
71 |
bots_role = discord.utils.get(message.guild.roles, id=1258328471609016341)
|
72 |
+
#if huggingfolks_role not in message.author.roles: # no need for ping if we're already discussing
|
73 |
+
if bots_role not in message.author.roles: # bots shouldn't trigger pings for this
|
74 |
+
content = message.content.lower()
|
75 |
+
for trigger, slack_mention in TRIGGERS.items():
|
76 |
+
if all(word in content for word in trigger):
|
77 |
+
daily_pings.append({
|
78 |
+
'author': str(message.author),
|
79 |
+
'content': message.content,
|
80 |
+
'channel': message.channel.name,
|
81 |
+
'url': message.jump_url,
|
82 |
+
'mention': slack_mention,
|
83 |
+
'trigger': trigger
|
84 |
+
})
|
85 |
+
break
|
86 |
|
87 |
# Check if the message is in a thread
|
88 |
if isinstance(message.channel, discord.Thread):
|
|
|
139 |
print(f"Error posting to Slack: {e.response['error']}")
|
140 |
return None
|
141 |
|
142 |
+
#----------------------------------------------------------------------------------------------
|
143 |
+
async def collect_pings():
|
144 |
+
await bot.wait_until_ready()
|
145 |
+
while not bot.is_closed():
|
146 |
+
await aiojobs.create_scheduler().spawn(send_daily_pings())
|
147 |
+
await asyncio.sleep(60)
|
148 |
+
|
149 |
+
async def send_daily_pings():
|
150 |
+
global daily_pings
|
151 |
+
if daily_pings:
|
152 |
+
# combine into one message
|
153 |
+
combined_message = '\n'.join(f"{ping['author']} in #{ping['channel']} said: {ping['content']} (link: {ping['url']})" for ping in daily_pings)
|
154 |
+
await post_to_slack(None, combined_message, SLACK_CHANNEL_ID_TEST, None, None, None)
|
155 |
+
daily_pings = [] # reset after posting
|
156 |
+
|
157 |
+
|
158 |
+
|
159 |
+
|
160 |
+
|
161 |
|
162 |
+
# pings -------------------------------------------------------------------------------------------
|
163 |
|
164 |
async def post_to_slack(author, content, channel, url, slack_mention, trigger):
|
165 |
try:
|
|
|
173 |
|
174 |
# runs discord bot in thread = helps avoid blocking calls
|
175 |
def run_bot():
|
176 |
+
bot.loop.create_task(collect_pings())
|
177 |
bot.run(DISCORD_TOKEN)
|
178 |
threading.Thread(target=run_bot).start()
|
179 |
def greet(name):
|