DAY 19 我要+1 群组团购辅助机器人

前面文章在处理讯息文字,这里我要做的功能是在群组内喊要什麽东西+1,资料库能把它纪录下来

资料库

这边在建一个资料表来记录+1的userid跟LINE名字
一样设mid为FK关联到group_buying_message
group_buying_user:

id mid uid name quantity

关键字与上传至资料库

我要让人在关键字後加上要的数量
关键字 A+1 B+2
关键字 +1
亦可使用LINE emoji
关键字 (A)+1 (B)+2

整体功能做出来了,细节下篇做修饰
关键字与上传至资料库,传资料库的讯息到聊天室中
https://ithelp.ithome.com.tw/upload/images/20211001/20140165QyTJ0mR554.png
insert如果放前面的话,整段跑下来会超过1秒,讯息会被拒绝,所以在insert前就先送出讯息,而未insert入的资料,在前面直接加入message_text_d

if(event.message.text[:3:] in keywords and len(event.message.text)>3):
    key=event.message.text[:3:]      
    profile = line_bot_api.get_profile(event.source.user_id)
    cursor=conn.cursor()      
    cursor.execute(f"SELECT message_text FROM group_buying_message WHERE keyword='{key}';")
    message_text = cursor.fetchone()
    cursor.execute(f"SELECT index,product_id,emoji_id FROM message_emoji WHERE mid=(SELECT mid FROM group_buying_message WHERE keyword='{key}');")
    rows = cursor.fetchall()
    emojis=[]
    #将资料一笔一笔写入list中
    for row in rows:
        emojis.append({'index': row[0],'productId': row[1],'emojiId': row[2]})
    message_text_d="".join(message_text)
    cursor.execute(f"SELECT name,quantity FROM group_buying_user WHERE mid=(SELECT mid FROM group_buying_message WHERE keyword='{key}');")
    users = cursor.fetchall()
    for user in users:
        message_text_d=message_text_d+"".join(user[0])+" "+"".join(user[1])+"\n"
    message_text_d=message_text_d+profile.display_name+" "+event.message.text[4::]

    message=TextSendMessage(message_text_d,emojis)
    line_bot_api.reply_message(event.reply_token,message)
    cursor.execute(f"INSERT INTO group_buying_user (mid, uid, name, quantity) VALUES ((SELECT mid FROM group_buying_message WHERE keyword='{key}'),'{event.source.user_id}','{profile.display_name}','{event.message.text[4::]}' );")
    conn.commit()
    cursor.close()

<<:  [Day 26] 趋势化资料实作(一)

>>:  台股大跌,印证「别人恐惧,我贪婪」的时刻来了

Day21,Prometheus Operator

正文 今天要使用helm来安装 Prometheus Operator,原先的prometheus ...

Day 04: 函式、错误处理

「关於函式的首要准则,就是要简短。第二项准则,就是要比第一项的简短函式还要更简短。这是一个我无法证...

Flutter基础介绍与实作-Day19 FireBase-设定问题

大家昨天设定完Firebase有没有发现一个问题啊,要开启Google登入时,专案必须要有SHA1指...

DAY27 - 建议避免的CSS命名规则

昨天,提供了一种CSS命名的方法, 今天,我们再来看看有什麽要避免的CSS命名呢? 避免直接把颜色放...

[Day22]C# 鸡础观念- 物件导向(oop)~物件(Object)

在程序语言中万物皆物件, 就如同真实世界中, 所有物质接由元素组成一般 物件基本原理 C#通过new...