
Send slack message via api using `xoxp` User token
- Create an app here: https://api.slack.com/apps
- You can see newly created Slack app here: https://api.slack.com/apps/
- On App screen, click OAuth & Permissions in the sidebar.
- Under User Token Scopes section, click Add an OAuth Scope
- Under OAuth Tokens , click Install to Productiwitty. This will generate User OAuth Token starting with
xoxp
.
Now install slack_sdk
inside virtualenv using:
pip install slack_sdk
Then you can send messages via Slack API using following Python 3 code:
#!/usr/bin/env python3
import datetime
from slack_sdk import WebClient
# ID of channel you want to post message to
#
channel_id = "CXXXXXXX"
user_token = "xoxp-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
client = WebClient(user_token)
def send_slack_message(channel_id, msg):
try:
result = client.chat_postMessage(
channel=channel_id,
text=msg
)
print(result)
except SlackApiError as e:
print(f"Error: {e}")
send_slack_message(channel_id, "hello")
You can also schedule a message using this code:
def schedule_msg(channel_id, at_hour, at_minute, msg, day):
scheduled_time = datetime.time(hour=at_hour, minute=at_minute)
schedule_timestamp = datetime.datetime.combine(day, scheduled_time).strftime('%s')
try:
result = client.chat_scheduleMessage(
channel=channel_id,
text=msg,
post_at=schedule_timestamp
)
print(result)
except Exception as e:
print(f"EXCEPTION!!! {e}")
today = datetime.date.today()
# Schedule a message to be sent at 23:35 (11:35pm) today:
schedule_msg(channel_id, 23, 35, "bye", today)