2024-06-03 18:24:56 -05:00
import os
from slack_bolt import App
from slack_bolt . adapter . socket_mode import SocketModeHandler
from dotenv import load_dotenv
import firepup650 as fp
input = fp . replitInput
2024-06-04 16:37:19 -05:00
fp . replitCursor = fp . bcolors . REPLIT + " >>> " + fp . bcolors . RESET # Totally not hijacking one of my functions to use ;P
2024-06-03 18:24:56 -05:00
load_dotenv ( )
2024-06-04 16:08:13 -05:00
for requiredVar in [ " SLACK_BOT_TOKEN " , " SLACK_APP_TOKEN " ] :
if not os . environ . get ( requiredVar ) :
raise ValueError ( f ' Missing required environment variable " { requiredVar } " . Please create a .env file in the same directory as this script and define it. ' )
2024-06-03 18:24:56 -05:00
app = App ( token = os . environ . get ( " SLACK_BOT_TOKEN " ) )
client = app . client
if __name__ == " __main__ " :
2024-06-04 16:37:19 -05:00
print ( " ^D at any time to terminate program " )
2024-06-03 18:24:56 -05:00
while 1 :
2024-06-04 16:37:19 -05:00
chan = input ( " Channel ID " )
2024-06-03 18:24:56 -05:00
try :
print ( " ^C to change channel " )
while 1 :
2024-06-04 16:37:19 -05:00
thread = input ( " Reply to a thread? (y|N) " ) . lower ( ) . startswith ( " y " )
2024-06-03 18:24:56 -05:00
ts = None
if thread :
2024-06-04 16:37:19 -05:00
hasID = input ( " Do you have the TS ID? (y|N)) " ) . lower ( ) . startswith ( " y " )
2024-06-03 18:24:56 -05:00
if not hasID :
try :
2024-06-04 16:37:19 -05:00
print ( " Getting the last 50 messages for threading options... " )
2024-06-03 18:24:56 -05:00
res = client . conversations_history (
2024-06-04 16:37:19 -05:00
channel = chan , inclusive = True , limit = 50
2024-06-03 18:24:56 -05:00
)
2024-06-04 16:37:19 -05:00
messages = res [ " messages " ]
texts = { }
for i in range ( len ( messages ) ) :
texts [ f ' { messages [ i ] [ " text " ] } ( { messages [ i ] [ " ts " ] } ) ' ] = i
found = messages [ fp . menu ( texts , " Please select the message to reply to as a thread " ) ]
2024-06-03 18:24:56 -05:00
ts = found [ " ts " ]
except Exception as E :
print ( f " Exception: { E } " )
2024-06-04 16:37:19 -05:00
break
2024-06-03 18:24:56 -05:00
else :
ts = input ( " TS ID " )
2024-06-04 16:37:19 -05:00
print ( " ^C to change/exit thread (^C twice if you want to change channel) " )
try :
while 1 :
msg = input ( " [THREAD] Message (Raw text, not blocks) " )
2024-06-03 18:24:56 -05:00
try :
print (
client . chat_postMessage (
channel = chan , text = msg , thread_ts = ts
)
)
except Exception as E :
print ( f " Exception: { E } " )
2024-06-04 16:37:19 -05:00
except KeyboardInterrupt :
print ( )
if ts :
continue
msg = input ( " Message (Raw text, not blocks) " )
2024-06-03 18:24:56 -05:00
try :
print ( client . chat_postMessage ( channel = chan , text = msg ) )
except Exception as E :
print ( f " Exception: { E } " )
except KeyboardInterrupt :
print ( )