Skip to content
This repository was archived by the owner on Nov 13, 2025. It is now read-only.

Commit a1a8202

Browse files
committed
JSON Added and Edit README File
1 parent 638421e commit a1a8202

File tree

4 files changed

+896
-264
lines changed

4 files changed

+896
-264
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
./node_modules

README.md

Lines changed: 239 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,240 @@
11
# LineBot
2-
Source Code รสมะเขือเทศ
2+
Source Code รสมะเขือเทศ
3+
```js
4+
const { google } = require("googleapis");
5+
const line = require('@line/bot-sdk');
6+
const express = require('express');
7+
const dotenv = require('dotenv');
8+
const message = require('./message.json');
9+
10+
// config env และ package
11+
const env = dotenv.config().parsed
12+
const app = express()
13+
14+
const lineConfig = {
15+
channelAccessToken: env.CHANNEL_ACCESS_TOKEN,
16+
channelSecret: env.CHANNEL_SECRET
17+
}
18+
19+
const client = new line.Client(lineConfig);
20+
21+
// Setting ส่วนของ Google
22+
const auth = new google.auth.GoogleAuth({
23+
keyFile: "credentials.json",
24+
scopes: "https://www.googleapis.com/auth/spreadsheets"
25+
});
26+
27+
// ฟังชั่นหลัก
28+
app.post('/webhook', line.middleware(lineConfig), async (req, res, next) => {
29+
try {
30+
const events = req.body.events
31+
console.log('event', events);
32+
events.length > 0 ? await events.map(item => handleEvent(item)) : res.status(200).send("OK")
33+
34+
if (req.session.user) return next();
35+
return next(new NotAuthorizedError());
36+
} catch (e) {
37+
res.status(500).end()
38+
}
39+
});
40+
41+
//คำสั่งเรียกใช้งาน
42+
const prefix = '!';
43+
44+
// ตัวแปลไว้เก็บข้อความแบบ Global
45+
let replyLineMessage
46+
47+
// ฟังชั่นรอง
48+
const handleEvent = async (event) => {
49+
50+
// ส่วนของ Google
51+
const authclient = await auth.getClient();
52+
const googleSheets = google.sheets({version: "v4", auth: authclient });
53+
54+
// ID ของ Google Sheet
55+
const spreadsheetId = "1TFMBHX19EVQWgTZIruszDxIlXo5r1Oj4LYsQQTcutlM";
56+
57+
// get ค่าแถวของ GS
58+
const getRows = await googleSheets.spreadsheets.values.get({auth, spreadsheetId, range: "data1"});
59+
60+
// เช็คข้อมูลว่าเป็น message หรือเปล่า
61+
if(event.type !== 'message' || event.message.type !== 'text') return null;
62+
63+
// เริ่มทำงานในโต้ตอบ
64+
else if (event.message.text.startsWith(prefix)) {
65+
66+
// คำสั่งเรียกใช้งาน
67+
const args = event.message.text.trim().split(/ +/g);
68+
const cmd = args[0].slice(prefix.length).toLowerCase();
69+
70+
// ตัวแปลเก็บข้อมูลจาก GS และ เก็บค่าเช็ค
71+
let x, y, sheet
72+
let checkitem = true;
73+
74+
// เช็คข้อมูลว่าตรงกับ GS หรือเปล่า
75+
for (var i=1;i<getRows.data.values.length; i++){
76+
if(getRows.data.values[i][0] != args[1]) {
77+
// เช็คว่ามีข้อมูลอยู่หรือเปล่า
78+
checkitem = false;
79+
}
80+
}
81+
82+
for (var i=1;i<getRows.data.values.length; i++){
83+
if(getRows.data.values[i][0] == args[1]) {
84+
x = getRows.data.values[i][1]
85+
y = getRows.data.values[i][2]
86+
checkitem = true;
87+
sheet = i;
88+
}
89+
}
90+
91+
// ส่งข้อมูลไปเก็บไว้ใน ไฟล์ JSON
92+
let num1 = 1;
93+
let num2 = 0;
94+
for (let i = 0; i < 5; i++) {
95+
num1+=1
96+
num2+=1
97+
message.msg1.contents.contents[0].body.contents[3].contents[num1].contents[0].text = getRows.data.values[num2][0];
98+
message.msg1.contents.contents[0].body.contents[3].contents[num1].contents[1].text = getRows.data.values[num2][1];
99+
message.msg1.contents.contents[0].body.contents[3].contents[num1].contents[2].text = getRows.data.values[num2][2];
100+
}
101+
for (let i = 0; i < 4; i++) {
102+
num2+=1
103+
message.msg1.contents.contents[1].body.contents[3].contents[i].contents[0].text = getRows.data.values[num2][0];
104+
message.msg1.contents.contents[1].body.contents[3].contents[i].contents[1].text = getRows.data.values[num2][1];
105+
message.msg1.contents.contents[1].body.contents[3].contents[i].contents[2].text = getRows.data.values[num2][2];
106+
}
107+
108+
message.msg2.contents.body.contents[1].text = args[1];
109+
message.msg2.contents.body.contents[3].contents[0].contents[1].text = x;
110+
message.msg2.contents.body.contents[3].contents[1].contents[1].text = y;
111+
112+
// เริ่มคำสั่ง
113+
switch (cmd){
114+
case "stock":
115+
replyLineMessage = message.msg1
116+
break
117+
case "ckst":
118+
if (args[1]==null) {
119+
replyLineMessage = {"type": "text", "text": "โปรดกรอกข้อมูลที่ต้องการค้นหาครับ"}
120+
break
121+
}
122+
if (checkitem!=true) replyLineMessage = {"type": "text", "text": "ไม่พบข้อมูลที่ต้องการตรวจสอบครับ" }
123+
else replyLineMessage = message.msg2
124+
break
125+
case "adst":
126+
if (checkitem==true){
127+
replyLineMessage = {"type": "text", "text": "มีสินค้านี้อยู่แล้วโปรดใช้ !upst เพื่อเพิ่มข้อมูลครับ"}
128+
break
129+
}
130+
if (args[1]==null){
131+
replyLineMessage = {"type": "text", "text": "โปรดกรอกข้อมูลที่ต้องการเพิ่ม ตัวอย่างเช่น !adst ชื่อสินค้า จำนวน ราคา"}
132+
break
133+
}else if (args[2]==null) {
134+
replyLineMessage = {"type": "text", "text": "โปรดกรอก จำนวน สินค้า ตัวอย่างเช่น !adst ชื่อสินค้า จำนวน ราคา"}
135+
break
136+
}else if (args[3]==null) {
137+
replyLineMessage = {"type": "text", "text": "โปรดกรอก ราคา สินค้า ตัวอย่างเช่น !adst ชื่อสินค้า จำนวน ราคา"}
138+
break
139+
}
140+
141+
// เพิ่มข้อมูลลงแถวของ GS
142+
await googleSheets.spreadsheets.values.append({auth, spreadsheetId, range: "data1!A:C", valueInputOption: "USER_ENTERED",
143+
resource: {
144+
values: [[args[1], args[2], args[3]]]
145+
}
146+
});
147+
148+
replyLineMessage = {"type": "text", "text": "เพิ่มสินค้าลงในคลังเรียบร้อยแล้วค้าบ >_<" }
149+
break
150+
case "upst":
151+
if (checkitem!=true){
152+
replyLineMessage = {"type": "text", "text": "ไม่พบข้อมูลที่ต้องการเพิ่มครับ"}
153+
break
154+
}
155+
if (args[1]==null){
156+
replyLineMessage = {"type": "text", "text": "โปรดกรอกข้อมูลที่ต้องการอัพเดท ตัวอย่างเช่น !upst ชื่อสินค้า จำนวน ราคา"}
157+
break
158+
}else if (args[2]==null) {
159+
replyLineMessage = {"type": "text", "text": "โปรดกรอก จำนวน สินค้า ตัวอย่างเช่น !upst ชื่อสินค้า จำนวน ราคา"}
160+
break
161+
}else if (args[3]==null) {
162+
replyLineMessage = {"type": "text", "text": "โปรดกรอก ราคา สินค้า ตัวอย่างเช่น !upst ชื่อสินค้า จำนวน ราคา"}
163+
break
164+
}
165+
166+
let updatedata = parseInt(args[2])+parseInt(x);
167+
// อัพเดทข้อมูลลงแถวของ GS
168+
await googleSheets.spreadsheets.values.update(
169+
{auth, spreadsheetId, range: `data1!A${sheet+1}:C${sheet+1}`, valueInputOption: "USER_ENTERED",
170+
resource:{range: `data1!A${sheet+1}:C${sheet+1}`, majorDimension: "ROWS", values: [[`${args[1]}`, `${updatedata}`, `${args[3]}`]] }
171+
});
172+
173+
replyLineMessage = {"type": "text", "text": "อัพเดทข้อมูลเรียบร้อยแล้วค้าบบบ" }
174+
break
175+
case "help":
176+
replyLineMessage = message.msg3
177+
break
178+
default:
179+
replyLineMessage = {"type": "text", "text": "ไม่พบคำสั่ง โปรดลองพิม !help เพื่อดูคำสั่งครับ"}
180+
break
181+
}
182+
183+
// ส่งข้อมูลกลับไปยังฟังชั่นหลัก
184+
return client.replyMessage(event.replyToken, replyLineMessage);
185+
186+
// พิมหาบอทที่ไม่ใช่ command หรือ Prefix
187+
} else {
188+
let msg;
189+
let usermsg = ["มี", "ใช่"]
190+
let replymsgX = ["ต้องการใช้งานบอทหรอครับ? (โปรดพิม ใช่ ถ้าต้องการใช้งานครับ)", "มีอะไรให้ช่วยไหมครับ >_< (โปรดพิม มี ถ้าต้องการใช้งานครับ)"]
191+
let replymsgY = ["โปรดพิม !help ครับ", "พิม !help ดูสิ!", "พิม !help เพื่อดูคำสั่งครับ"]
192+
193+
for (let i=0; i < usermsg.length; i++) {
194+
if (!event.message.text.includes(usermsg[i])) {
195+
check = false;
196+
}
197+
}
198+
199+
for (let i=0; i < usermsg.length; i++) {
200+
if (event.message.text.includes(usermsg[i])) {
201+
msg = {"type": "text", "text": replymsgY[Math.floor(Math.random()*replymsgY.length)] };
202+
check = true;
203+
}
204+
}
205+
206+
if (check == false) {
207+
switch (event.message.text) {
208+
case "สีเหลือง" :
209+
msg = {"type": "text", "text": "Yellow!"};
210+
break
211+
case "มะม่วง" :
212+
msg = {"type": "text", "text": "Mango!"};
213+
break
214+
case "ห้ะ" :
215+
msg = {"type": "text", "text": "ห้ะ!"};
216+
break
217+
default :
218+
msg = {"type": "text", "text": replymsgX[Math.floor(Math.random()*replymsgX.length)] };
219+
break
220+
}
221+
}
222+
223+
return client.replyMessage(event.replyToken, msg);
224+
}
225+
}
226+
const PORT = process.env.PORT || 3000;
227+
228+
// รันบน localhost
229+
230+
// app.listen(4000, () => {
231+
// console.log(`listening on 4000`);
232+
// });
233+
234+
// รันบน server
235+
236+
app.listen(PORT, () => {
237+
console.log(PORT);
238+
console.log(`listening on Port ${PORT}`);
239+
});
240+
```

0 commit comments

Comments
 (0)