python - 无法将 slack 中的用户名打印为“@John”,以及如何在不手动输入 cntrl+c 的情况下关闭 linux 中的 python 文件
问题描述
Q1) 无法将 slack 中的用户名打印为“@John”而不是打印“WLCLZ2LDP”
因此,对于变量“用户名”,它应该打印 slack 用户名(例如:JohnDoe),而是将随机字母打印为 WLCLZ2LDP
代码
@slack.RTMClient.run_on(event='message')
def say_hello(**payload):
try:
##0 get clients and payload
logging.info('msg received')
data = payload['data']
web_client = payload['web_client']
rtm_client = payload['rtm_client']
##0 - 1 Check if it is the first msg, not replied msg by me
# print(data)
if data.get('text') == None:
logging.info('This msg is my replied msg.')
return False
##0-2 Get channel info
channel_id = data['channel']
thread_ts = data['ts']
global user
user = data['user']
##1 get scenario submsg
msg = data['text']
retVal = analysis_msg(msg)
.
.
.
.code continuation
.
.
.
.mycursor = mydb.cursor()
for value in submsg:
print(value)
fulfilment=submsg[0]
sku=submsg[1]
environment=submsg[2]
payment=submsg[3]
ts = time.time()
date = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
orderNumber=res
username=user
print(fulfilment)
print(sku)
print(environment)
print(payment)
print(username)
print(orderNumber)
sqlformula = "INSERT INTO orderDetails (fulfilment,sku,environment,payment,orderNumber,date,user) VALUES (%s,%s,%s,%s,%s,%s,%s)"
#order=("sth",3643387,"sftqa2","AMEX")
#mycursor.execute(sqlformula,order)
mycursor.execute(sqlformula,(fulfilment,sku,environment,payment,orderNumber,date,username))
mydb.commit()
mydb.close()
输出
下面的输出我需要得到松弛的用户名,但我得到的是随机字母
spu
3646989
mq1
AMEX
WLCLZ2LDP
"200002086748"
编辑代码
@slack.RTMClient.run_on(event='message')
def say_hello(**payload):
try:
##0 get clients and payload
logging.info('msg received')
data = payload['data']
web_client = payload['web_client']
rtm_client = payload['rtm_client']
##0 - 1 Check if it is the first msg, not replied msg by me
# print(data)
if data.get('text') == None:
logging.info('This msg is my replied msg.')
return False
##0-2 Get channel info
channel_id = data['channel']
thread_ts = data['ts']
global user
user = data['user']
msg = data['text']
retVal = analysis_msg(msg)
response = web_client.users_list()
assert(response['ok'])
user_map = {x['id']: x['name'] for x in response['members']}
global user_name
user_name = user_map[user] if user in user_map else None
print(user_name)
案例 1:编辑代码的输出 - 当其他一些用户尝试从他们的机器上得到“无”时(不是预期的)
spu
2469048
sftqa3
AMEX
None
BBY01-200002096736
案例 2:编辑代码的输出:当我使用我的机器运行时,我能够看到我的帮助,即 A6002043(预期)
spu
2469048
sftqa3
VISA
a6002043
BBY01-200002096040
解决方案
请允许我澄清两个误解:
- 这些不是“随机字母”,而是用户 ID。
- 事件不包含用户名,仅包含用户的 ID。
要获取用户名,您需要调用 API 方法users.list来获取用户列表。有了它,您可以将 ID 映射到用户名。
以下是如何获取用户 ID 的用户名的示例代码:
slack_token = os.environ['SLACK_TOKEN']
response = client.users_list()
assert(response['ok'])
user_map = {x['id']: x['name'] for x in response['members']}
user_name = user_map[user_id] if user_id in user_map else None
print(user_name)
推荐阅读
- java - 如何从Java 8中的纪元获取分钟的秒数
- corda - 有没有办法在不循环的情况下向交易对手发送多笔交易
- javascript - 如何在 Vue JS 中存储与日期对应的输入值?
- php - 运行我的php脚本时出现意外的elseif
- javascript - For循环不适用于内部html Javascript
- csv - 在 Scilab 中打开具有不同行和列结构的文件
- vim - 创建新文件时如何保留^M?
- regex - How to write PathPrefixStripRegex in Traefik?
- python - 在字符串中使用 (" ") 将字符串更改为浮点数
- python - pandas DataFrame中的按位不正确(包括NaN)