เดจเดฟเดเตเดเตพ เดฎเตเดฎเตเดชเดคเตเดคเตเดคเต เดเดคเดฟเดจเดเด เดตเดพเดฏเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเตเดเตเดเดฟเตฝ
เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ, เดธเตเดฅเดฟเดฐเดฎเดพเดฏ เดธเดเดญเดพเดทเดฃเด เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเตเดจเตเดจ เดเดฐเต เดฌเตเดเตเดเต เดเดเตเดเดจเต เดเดดเตเดคเดพเดฎเตเดจเตเดจเต เดจเดฎเตเดฎเตพ เดชเด เดฟเดเตเดเตเด. เด. เดฌเตเดเตเดเต เดจเดฟเดเตเดเดณเตเดเต เดเตเดฆเตเดฏเดเตเดเตพ เดเตเดฆเดฟเดเตเดเตเดเดฏเตเด เดจเดฟเดเตเดเตพ เดเดฟเดฒ เดตเดฟเดตเดฐเดเตเดเตพ เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด. เดจเดฟเดเตเดเตพ เดจเตฝเดเตเดจเตเดจ เดกเดพเดฑเตเดฑเดฏเต เดเดถเตเดฐเดฏเดฟเดเตเดเต, เดฌเตเดเตเดเต เดเดฟเดฒ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดจเดเดคเตเดคเตเด.
เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดฌเตเดเตเดเดฟเดจเตเดฑเต เดนเตเดกเดฟเดจเต เดเตเดดเดฟเตฝ เดเดฐเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดเดเตเดเดจเต เดเดชเดฏเตเดเดฟเดเตเดเดพเดฎเตเดจเตเดจเต เดเดเตเดเตพ เดชเด เดฟเดเตเดเตเด, เดเดเตเดเดณเตเดเต เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เดเดคเต SQLite เดเดฏเดฟเดฐเดฟเดเตเดเตเด, เดเดจเตเดจเดพเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดฎเดฑเตเดฑเตเดคเตเดเตเดเดฟเดฒเตเด DBMS เดเดชเดฏเตเดเดฟเดเตเดเดพเด. R เดญเดพเดทเดฏเดฟเตฝ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเตเดเดณเตเดฎเดพเดฏเดฟ เดธเดเดตเดฆเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดพเตป เดเตเดเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดเดดเตเดคเดฟ
"R-เตฝ เดเดฐเต เดเตเดฒเดฟเดเตเดฐเดพเด เดฌเตเดเตเดเต เดเดดเตเดคเตเดจเตเดจเต" เดเดจเตเดจ เดชเดฐเดฎเตเดชเดฐเดฏเดฟเดฒเต เดเดฒเตเดฒเดพ เดฒเตเดเดจเดเตเดเดณเตเด
เดเดเตเดเตพ เดเดฐเต เดฌเตเดเตเดเต เดธเตเดทเตเดเดฟเดเตเดเตเดเดฏเตเด เดเตเดฒเดฟเดเตเดฐเดพเดฎเดฟเตฝ เดธเดจเตเดฆเตเดถเดเตเดเตพ เด เดฏเดฏเตเดเตเดเดพเตป เด เดคเต เดเดชเดฏเตเดเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต เดฌเตเดเตเดเดฟเดฒเตเดเตเดเต เดเดฎเดพเตปเดกเต เดชเดฟเดจเตเดคเตเดฃเดฏเตเด เดธเดจเตเดฆเตเดถ เดซเดฟเตฝเดเตเดเดฑเตเดเดณเตเด เดเตเตผเดเตเดเตเด เดเดฐเต เดฌเตเดเตเดเดฟเดฒเตเดเตเดเต เดเตเดฌเตเตผเดกเต เดชเดฟเดจเตเดคเตเดฃ เดเดเตเดเดจเต เดเตเตผเดเตเดเดพเด เดฌเตเดเตเดเตเดฎเดพเดฏเดฟ เดธเตเดธเตเดฅเดฟเดฐเดตเตเด เดฏเตเดเตเดคเดฟเดธเดนเดตเตเดฎเดพเดฏ เดธเดเดญเดพเดทเดฃเด เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเต
เดเดณเตเดณเดเดเตเดเด
เดจเดฟเดเตเดเตพเดเตเดเต เดกเดพเดฑเตเดฑ เดตเดฟเดถเดเดฒเดจเดคเตเดคเดฟเตฝ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดเดจเตเดฑเต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดเดพเดเดพเด
เดเดฎเตเดเด เดฌเตเดเตเดเต เดจเดฟเตผเดฎเตเดฎเดพเดฃ เดชเตเดฐเดเตเดฐเดฟเดฏ เดฌเตเดเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดเดเดจ เดฌเตเดเตเดเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดเดฐเต เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดธเตเดทเตเดเดฟเดเตเดเตเด เดเดฐเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเดจเตเดณเตเดณ เดซเดเดเตเดทเดจเตเดเตพ เดเดดเตเดคเตเด เดฌเตเดเตเดเต เดฐเตเดคเดฟเดเตพ เดธเดจเตเดฆเตเดถ เดซเดฟเตฝเดเตเดเดฑเตเดเตพ เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเดตเตผ เดฌเตเดเตเดเต เดฒเตเดเตเดเต เดเตเดกเต เดคเตเดฐเตเดฎเดพเดจเด
เดเดฎเตเดเด
เดฌเตเดเตเดเต เดจเดฟเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เด เดญเตเดฏเตผเดคเตเดฅเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดจเดฟเดเตเดเตพ เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดตเดฟเดตเดฐเดเตเดเตพ เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดตเตเดฃเตเดเดฟ, เดจเดฟเดเตเดเตพ เดกเดฏเดฒเตเดเดฟเดจเตเดฑเต เดจเดฟเดฒเดตเดฟเดฒเต เด เดตเดธเตเดฅ เดฐเตเดเดชเตเดชเตเดเตเดคเตเดคเตเดฃเตเดเดคเตเดฃเตเดเต. SQLite เดชเตเดฒเตเดฏเตเดณเตเดณ เดเดฟเดฒ เดเตพเดเตเดเตเตผเดคเตเดค เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดพเดฃเต เดเดคเดฟเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด เดจเดฒเตเดฒ เดฎเดพเตผเดเด.
เด. เดฏเตเดเตเดคเดฟ เดเดชเตเดฐเดเดพเดฐเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเด. เดเดเตเดเตพ เดฌเตเดเตเดเต เดฐเตเดคเดฟเดฏเต เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจเต, เดฌเตเดเตเดเต เดเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฟเดฒ เดตเดฟเดตเดฐเดเตเดเตพ เดคเตเดเตผเดเตเดเดฏเดพเดฏเดฟ เด เดญเตเดฏเตผเดคเตเดฅเดฟเดเตเดเตเดจเตเดจเต, เดเดฐเต เดเดเตเดเดคเตเดคเดฟเดฒเตเด เด เดคเต เด เดตเดฟเดตเดฐเดเตเดเตพ เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดเดฏเตเด เด เดคเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเดพเด.
เดธเดพเดงเตเดฏเดฎเดพเดฏ เดเดฑเตเดฑเดตเตเด เดฒเดณเดฟเดคเดฎเดพเดฏ เดฌเตเดเตเดเต เดเดเตเดเตพ เดเดดเตเดคเตเด, เดเดฆเตเดฏเด เด เดคเต เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเตเด เดชเดฟเดจเตเดจเตเดเต เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเดพเดฏเดตเตเด เดเตเดฆเดฟเดเตเดเตเด, เดเตเดเดพเดคเต เดฒเดญเดฟเดเตเด เดกเดพเดฑเตเดฑ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดฒเตเดเตเดเต เดธเดเดฐเดเตเดทเดฟเดเตเดเตเด. เดชเตเดฐเดพเดฏเด เดเตเดฆเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดจเตฝเดเดฟเดฏ เดกเดพเดฑเตเดฑ เดเดฐเต เดธเดเดเตเดฏเดฏเดพเดฃเตเดจเตเดจเตเด เดตเดพเดเดเดฎเดฒเตเดฒเตเดจเตเดจเตเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด.
เด เดคเตเดคเดฐเดฎเตเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดธเดเดญเดพเดทเดฃเดคเตเดคเดฟเดจเต เดฎเตเดจเตเดจเต เด เดตเดธเตเดฅเดเตพ เดฎเดพเดคเตเดฐเดฎเต เดเดฃเตเดเดพเดเต:
- เดธเตเดฑเตเดฑเดพเตผเดเตเดเต เดเดจเตเดจเดคเต เดฌเตเดเตเดเดฟเดจเตเดฑเต เดธเดพเดงเดพเดฐเดฃ เด เดตเดธเตเดฅเดฏเดพเดฃเต, เด เดคเดฟเตฝ เดจเดฟเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฐเต เดตเดฟเดตเดฐเดตเตเด เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ
- wait_name - เดเดฐเต เดชเตเดฐเต เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดฌเตเดเตเดเต เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เด เดตเดธเตเดฅ
- เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเดพเดฏเด เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดฌเตเดเตเดเต เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เด เดตเดธเตเดฅเดฏเดพเดฃเต wait_age, เดฎเตเดดเตเดตเตป เดตเตผเดทเดเตเดเดณเตเดเต เดเดฃเตเดฃเด.
เดฌเตเดเตเดเต เดจเดฟเตผเดฎเตเดฎเดพเดฃ เดชเตเดฐเดเตเดฐเดฟเดฏ
เดฒเตเดเดจเดคเตเดคเดฟเตฝ, เดเดเตเดเตพ เดเดเตเดเด เดเดเตเดเดฎเดพเดฏเดฟ เดเดฐเต เดฌเตเดเตเดเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเด; เดฎเตเดดเตเดตเตป เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเตเด เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฐเตเดคเดฟเดฏเดฟเตฝ เดเดฟเดคเตเดฐเตเดเดฐเดฟเดเตเดเดพเด:
- เดเดเตเดเตพ เดเดฐเต เดฌเตเดเตเดเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต, เด เดคเดฟเตฝ เดเดเตเดเตพ เดเดฟเดฒ เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเตพ เดธเดเดญเดฐเดฟเดเตเดเตเด. เดเดเตเดเดณเตเดเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดฌเตเดเตเดเต เดเตเดเตเดเดฃเตเด เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดซเดฏเดฒเดฟเดฒเตเดเตเดเตเดณเตเดณ เดชเดพเดคเดฏเตเด.
- เดฌเตเดเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดฒเตเดเตเดเตเดณเตเดณ เดชเดพเดค เดธเดเดญเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต.
- เดเดเตเดเตพ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเตเด เดจเดฟเดฐเดตเดงเดฟ เดซเดเดเตเดทเดจเตเดเดณเตเด เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต, เด เดคเตเดตเดดเดฟ เดฌเตเดเตเดเดฟเดจเต เดธเดเดตเดฆเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด.
- เดเดเตเดเตพ เดฌเตเดเตเดเต เดฐเตเดคเดฟเดเตพ เดเดดเตเดคเตเดจเตเดจเต, เด เดคเดพเดฏเดคเต. เด เดคเต เดจเดฟเตผเดตเดนเดฟเดเตเดเตเดจเตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ.
- เดธเดจเตเดฆเตเดถ เดซเดฟเตฝเดเตเดเดฑเตเดเตพ เดเตเตผเดเตเดเตเดจเตเดจเต. เดเดพเดฑเตเดฑเดฟเดจเตเดฑเต เดจเดฟเดฒเดตเดฟเดฒเต เด เดตเดธเตเดฅเดฏเต เดเดถเตเดฐเดฏเดฟเดเตเดเต เดฌเตเดเตเดเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดฐเตเดคเดฟเดเตพ เดเดเตเดธเดธเต เดเตเดฏเตเดฏเตเดจเตเดจ เดธเดนเดพเดฏเดคเตเดคเตเดเต.
- เดเดตเดถเตเดฏเดฎเดพเดฏ เดฌเตเดเตเดเต เดฐเตเดคเดฟเดเดณเตเดฎเดพเดฏเดฟ เดเดฎเดพเตปเดกเตเดเดณเตเด เดธเดจเตเดฆเตเดถเดเตเดเดณเตเด เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจ เดนเดพเตปเดกเตโเดฒเดฑเตเดเตพ เดเดเตเดเตพ เดเตเตผเดเตเดเตเดจเตเดจเต.
- เดจเดฎเตเดเตเดเต เดฌเตเดเตเดเต เดฒเตเดเตเดเต เดเตเดฏเตเดฏเดพเด.
เดฌเตเดเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดเดเดจ
เดธเตเดเดฐเตเดฏเดพเตผเดคเตเดฅเด, เดเดเตเดเดณเตเดเต เดฌเตเดเตเดเดฟเดจเตเดฑเต เดเตเดกเตเด เดฎเดฑเตเดฑเต เด เดจเตเดฌเดจเตเดง เดซเดฏเดฒเตเดเดณเตเด เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเดเดจเดฏเดฟเดฒเตเดเตเดเต เดตเดฟเดญเดเดฟเดเตเดเตเด.
- เดฌเตเดเตเดเต.เดเตผ - เดเดเตเดเดณเตเดเต เดฌเตเดเตเดเดฟเดจเตเดฑเต เดชเตเดฐเดงเดพเดจ เดเตเดกเต
- db_bot_function.R - เดกเดพเดฑเตเดฑเดพเดฌเตเดธเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดซเดเดเตเดทเดจเตเดเดณเตเดณเตเดณ เดเตเดกเดฟเดจเตเดฑเต เดเดฐเต เดฌเตเดฒเตเดเตเดเต
- bot_methods.R - เดฌเตเดเตเดเต เดฐเตเดคเดฟเดเดณเตเดเต เดเตเดกเต
- message_filters.R - เดธเดจเตเดฆเตเดถ เดซเดฟเตฝเดเตเดเดฑเตเดเตพ
- เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเดตเตผ.เดเตผ - เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเดตเตผ
- config.cfg - เดฌเตเดเตเดเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป
- create_db_data.sql โ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดเดพเดฑเตเดฑเต เดกเดพเดฑเตเดฑ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดชเดเตเดเดฟเด เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ SQL เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต
- create_db_state.sql โ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดจเดฟเดฒเดตเดฟเดฒเต เดเดพเดฑเตเดฑเต เด เดตเดธเตเดฅเดฏเตเดเต เดเดฐเต เดชเดเตเดเดฟเด เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ SQL เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต
- bot.db - เดฌเตเดเตเดเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต
เดจเดฟเดเตเดเตพเดเตเดเต เดฎเตเดดเตเดตเตป เดฌเตเดเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเตเด เดเดพเดฃเดพเตป เดเดดเดฟเดฏเตเด, เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ
เดฌเตเดเตเดเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป
เดเดเตเดเตพ เดเดฐเต เดเตเตบเดซเดฟเดเดฑเดฑเดพเดฏเดฟ เดธเดพเดงเดพเดฐเดฃ เดเดชเดฏเตเดเดฟเดเตเดเตเด
[bot_settings]
bot_token=ะขะะะะ_ะะะจะะะ_ะะะขะ
[db_settings]
db_path=C:/ะะฃะขะฌ/ะ/ะะะะะ/ะะ ะะะะขะ/bot.db
เดเตเตบเดซเดฟเดเดฑเดฟเตฝ เดจเดฎเตเดฎเตพ เดฌเตเดเตเดเต เดเตเดเตเดเดฃเตเด เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดฒเตเดเตเดเตเดณเตเดณ เดชเดพเดคเดฏเตเด เดเดดเตเดคเตเดจเตเดจเต, เด เดคเดพเดฏเดคเต. bot.db เดซเดฏเดฒเดฟเดฒเตเดเตเดเต; เด เดเตเดคเตเดค เดเดเตเดเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เดซเดฏเตฝ เดคเดจเตเดจเต เดธเตเดทเตเดเดฟเดเตเดเตเด.
เดเตเดเตเดคเตฝ เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดฏ เดฌเตเดเตเดเตเดเตพเดเตเดเดพเดฏเดฟ, เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดเตเดคเตฝ เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดฏ เดเตเตบเดซเดฟเดเดฑเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด, เดเตเดเดพเดคเต, เดเดฐเต ini เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดเดดเตเดคเตเดฃเตเด เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ, เดจเดฟเดเตเดเตพเดเตเดเต JSON เดเตพเดชเตเดชเตเดเตเดฏเตเดณเตเดณ เดฎเดฑเตเดฑเตเดคเตเดเตเดเดฟเดฒเตเด เดซเตเตผเดฎเดพเดฑเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเดพเด.
เดเดฐเต เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดธเตเดทเตเดเดฟเดเตเดเตเด
เดเดฐเต เดชเดฟเดธเดฟเดฏเดฟเดฒเตเด, เดฌเตเดเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดเดณเตเดณ เดซเตเตพเดกเตผ เดตเตเดฏเดคเตเดฏเดธเตเดค เดกเดฏเดฑเดเตเดเดฑเดฟเดเดณเดฟเดฒเตเด เดตเตเดฏเดคเตเดฏเดธเตเดค เดกเตเดฐเตเดตเตเดเดณเดฟเดฒเตเด เดธเตเดฅเดฟเดคเดฟเดเตเดฏเตเดฏเดพเด, เด
เดคเดฟเดจเดพเตฝ เดเตเดกเดฟเตฝ เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดซเตเตพเดกเดฑเดฟเดฒเตเดเตเดเตเดณเตเดณ เดชเดพเดค เดเดฐเต เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดตเดดเดฟ เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเด. TG_BOT_PATH
.
เดเดฐเต เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดจเดฟเดฐเดตเดงเดฟ เดฎเดพเตผเดเดเตเดเดณเตเดฃเตเดเต, เดเดฑเตเดฑเดตเตเด เดฒเดณเดฟเดคเดฎเดพเดฏเดคเต เด เดคเต เดเดฐเต เดซเดฏเดฒเดฟเตฝ เดเดดเตเดคเตเด เดเดจเตเดจเดคเดพเดฃเต .เดฑเตเตปเดตเดฟเดฑเตเตบ.
เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เด เดซเดฏเตฝ เดธเตเดทเตเดเดฟเดเตเดเดพเดจเต เดเดกเดฟเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเดจเต เดเดดเดฟเดฏเตเด file.edit(path.expand(file.path("~", ".Renviron")))
. เดเดคเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดคเต เดซเดฏเดฒเดฟเดฒเตเดเตเดเต เดเดฐเต เดตเดฐเดฟ เดเตเตผเดเตเดเตเด:
TG_BOT_PATH=C:/ะะฃะขะฌ/ะ/ะะะจะะะฃ/ะะ ะะะะขะฃ
เด เดเตเดคเตเดคเดคเดพเดฏเดฟ เดซเดฏเตฝ เดธเตเดตเต เดเตเดฏเตเดฏเตเด .เดฑเตเตปเดตเดฟเดฑเตเตบ เดเตเดเดพเดคเต RStudio เดชเตเดจเดฐเดพเดฐเดเดญเดฟเดเตเดเตเด.
เดเดฐเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต
เด เดเตเดคเตเดค เดเดเตเดเด เดเดฐเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดเดฃเตเดเดพเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต. เดเดเตเดเตพเดเตเดเต 2 เดชเดเตเดเดฟเดเดเตพ เดเดตเดถเตเดฏเดฎเดพเดฃเต:
- chat_data โ เดฌเตเดเตเดเต เดเดชเดฏเตเดเตเดคเดพเดตเดฟเตฝ เดจเดฟเดจเตเดจเต เด เดญเตเดฏเตผเดคเตเดฅเดฟเดเตเด เดกเดพเดฑเตเดฑ
- chat_state โ เดเดฒเตเดฒเดพ เดเดพเดฑเตเดฑเตเดเดณเตเดเตเดฏเตเด เดจเดฟเดฒเดตเดฟเดฒเต เด เดตเดธเตเดฅ
เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ SQL เดเตเดฆเตเดฏเด เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เด เดชเดเตเดเดฟเดเดเตพ เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด:
CREATE TABLE chat_data (
chat_id BIGINT PRIMARY KEY
UNIQUE,
name TEXT,
age INTEGER
);
CREATE TABLE chat_state (
chat_id BIGINT PRIMARY KEY
UNIQUE,
state TEXT
);
เดจเดฟเดเตเดเตพ เดฌเตเดเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดคเดฟเดเตเดเตเดฃเตเดเตเดเตเดเดฟเตฝ
# ะกะบัะธะฟั ัะพะทะดะฐะฝะธั ะฑะฐะทั ะดะฐะฝะฝัั
library(DBI) # ะธะฝัะตััะตะนั ะดะปั ัะฐะฑะพัั ั ะกะฃะะ
library(configr) # ััะตะฝะธะต ะบะพะฝัะธะณะฐ
library(readr) # ััะตะฝะธะต ัะตะบััะพะฒัั
SQL ัะฐะนะปะพะฒ
library(RSQLite) # ะดัะฐะนะฒะตั ะดะปั ะฟะพะดะบะปััะตะฝะธั ะบ SQLite
# ะดะธัะตะบัะพัะธั ะฟัะพะตะบัะฐ
setwd(Sys.getenv('TG_BOT_PATH'))
# ััะตะฝะธะต ะบะพะฝัะธะณะฐ
cfg <- read.config('config.cfg')
# ะฟะพะดะบะปััะตะฝะธะต ะบ SQLite
con <- dbConnect(SQLite(), cfg$db_settings$db_path)
# ะกะพะทะดะฐะฝะธะต ัะฐะฑะปะธั ะฒ ะฑะฐะทะต
dbExecute(con, statement = read_file('create_db_data.sql'))
dbExecute(con, statement = read_file('create_db_state.sql'))
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเดจเตเดณเตเดณ เดซเดเดเตเดทเดจเตเดเตพ เดเดดเตเดคเตเด
เดเดเตเดเตพเดเตเดเต เดเดคเดฟเดจเดเด เดเดฐเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเตฝ เดคเดฏเตเดฏเดพเดฑเดพเดฃเต เดเตเดเดพเดคเต เดเดฐเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดธเตเดทเตโเดเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเต. เด เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดฒเตเดเตเดเต เดกเดพเดฑเตเดฑ เดตเดพเดฏเดฟเดเตเดเดพเดจเตเด เดเดดเตเดคเดพเดจเตเด เดจเดฟเดเตเดเตพ เดเดชเตเดชเตเตพ เดซเดเดเตเดทเดจเตเดเตพ เดเดดเตเดคเตเดฃเตเดเดคเตเดฃเตเดเต.
เดจเดฟเดเตเดเตพ เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดคเดฟเดเตเดเตเดฃเตเดเตเดเตเดเดฟเตฝ
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดซเดเดเตเดทเตป เดเตเดกเต
# ###########################################################
# Function for work bot with database
# ะฟะพะปััะธัั ัะตะบััะตะต ัะพััะพัะฝะธะต ัะฐัะฐ
get_state <- function(chat_id) {
con <- dbConnect(SQLite(), cfg$db_settings$db_path)
chat_state <- dbGetQuery(con, str_interp("SELECT state FROM chat_state WHERE chat_id == ${chat_id}"))$state
return(unlist(chat_state))
dbDisconnect(con)
}
# ัััะฐะฝะพะฒะธัั ัะตะบััะตะต ัะพััะพัะฝะธะต ัะฐัะฐ
set_state <- function(chat_id, state) {
con <- dbConnect(SQLite(), cfg$db_settings$db_path)
# upsert ัะพััะพัะฝะธะต ัะฐัะฐ
dbExecute(con,
str_interp("
INSERT INTO chat_state (chat_id, state)
VALUES(${chat_id}, '${state}')
ON CONFLICT(chat_id)
DO UPDATE SET state='${state}';
")
)
dbDisconnect(con)
}
# ะทะฐะฟะธัั ะฟะพะปััะตะฝะฝัั
ะดะฐะฝะฝัั
ะฒ ะฑะฐะทั
set_chat_data <- function(chat_id, field, value) {
con <- dbConnect(SQLite(), cfg$db_settings$db_path)
# upsert ัะพััะพัะฝะธะต ัะฐัะฐ
dbExecute(con,
str_interp("
INSERT INTO chat_data (chat_id, ${field})
VALUES(${chat_id}, '${value}')
ON CONFLICT(chat_id)
DO UPDATE SET ${field}='${value}';
")
)
dbDisconnect(con)
}
# read chat data
get_chat_data <- function(chat_id, field) {
con <- dbConnect(SQLite(), cfg$db_settings$db_path)
# upsert ัะพััะพัะฝะธะต ัะฐัะฐ
data <- dbGetQuery(con,
str_interp("
SELECT ${field}
FROM chat_data
WHERE chat_id = ${chat_id};
")
)
dbDisconnect(con)
return(data[[field]])
}
เดเดเตเดเตพ 4 เดฒเดณเดฟเดคเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเต:
get_state()
โ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเดฒเดตเดฟเดฒเต เดเดพเดฑเตเดฑเต เดจเดฟเดฒ เดจเตเดเตเดset_state()
โ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดจเดฟเดฒเดตเดฟเดฒเต เดเดพเดฑเตเดฑเต เดจเดฟเดฒ เดเดดเตเดคเตเดget_chat_data()
- เดเดชเดฏเตเดเตเดคเดพเดตเต เด เดฏเดเตเด เดกเดพเดฑเตเดฑ เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดset_chat_data()
- เดเดชเดฏเตเดเตเดคเดพเดตเดฟเตฝ เดจเดฟเดจเตเดจเต เดฒเดญเดฟเดเตเด เดกเดพเดฑเตเดฑ เดฐเตเดเดชเตเดชเตเดเตเดคเตเดคเตเด
เดเดฒเตเดฒเดพ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเตเด เดตเดณเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฃเต, เด
เดต เดเดจเตเดจเตเดเดฟเตฝ เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดตเดพเดฏเดฟเดเตเดเตเดจเตเดจเต dbGetQuery()
, เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดชเตเดฐเดคเดฟเดฌเดฆเตเดงเดค UPSERT
เดชเตเดฐเดตเตผเดคเตเดคเดจเด (เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดฎเดพเดฑเตเดฑเตเดเดฏเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดฒเตเดเตเดเต เดชเตเดคเดฟเดฏ เดกเดพเดฑเตเดฑ เดเดดเตเดคเตเดเดฏเต เดเตเดฏเตเดฏเตเด), เดซเดเดเตเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเต dbExecute()
.
UPSERT เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดณเตเดณ เดตเดพเดเตเดฏเดเดเดจ เดเดชเตเดฐเดเดพเดฐเดฎเดพเดฃเต:
INSERT INTO chat_data (chat_id, ${field})
VALUES(${chat_id}, '${value}')
ON CONFLICT(chat_id)
DO UPDATE SET ${field}='${value}';
เด. เดเดเตเดเดณเตเดเต เดเตเดฌเดฟเตพ เดซเตเตฝเดกเดฟเตฝ chat_id เดเดฐเต เด เดฆเตเดตเดฟเดคเตเดฏ เดชเดฐเดฟเดฎเดฟเดคเดฟ เดเดฃเตเดเต, เดชเดเตเดเดฟเดเดเดณเตเดเต เดชเตเดฐเดพเดฅเดฎเดฟเด เดคเดพเดเตเดเตเดฒเดพเดฃเต. เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ, เดเดเตเดเตพ เดชเดเตเดเดฟเดเดฏเดฟเดฒเตเดเตเดเต เดตเดฟเดตเดฐเดเตเดเตพ เดเตเตผเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดจเตเดจเต, เดจเดฟเดฒเดตเดฟเดฒเต เดเดพเดฑเตเดฑเดฟเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดเดคเดฟเดจเดเด เดจเดฟเดฒเดตเดฟเดฒเตเดฃเตเดเตเดเตเดเดฟเตฝ เดเดเตเดเตพเดเตเดเต เดเดฐเต เดชเดฟเดถเดเต เดฒเดญเดฟเดเตเดเตเด, เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เด เดเดพเดฑเตเดฑเดฟเดจเดพเดฏเตเดณเตเดณ เดตเดฟเดตเดฐเดเตเดเตพ เด เดชเตโเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดจเตเดจเต.
เด เดเตเดคเตเดคเดคเดพเดฏเดฟ, เดฌเตเดเตเดเดฟเดจเตเดฑเต เดฐเตเดคเดฟเดเดณเดฟเดฒเตเด เดซเดฟเตฝเดเตเดเดฑเตเดเดณเดฟเดฒเตเด เดเดเตเดเตพ เด เดซเดเดเตเดทเดจเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเด.
เดฌเตเดเตเดเต เดฐเตเดคเดฟเดเตพ
เดเดเตเดเดณเตเดเต เดฌเตเดเตเดเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด
เดเตเดคเตเดค เดเดเตเดเด เดฐเตเดคเดฟเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต. เดจเดฟเดเตเดเตพ เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดคเดฟเดเตเดเตเดฃเตเดเตเดเตเดเดฟเตฝ
เดฌเตเดเตเดเต เดฐเตเดคเดฟ เดเตเดกเต
# ###########################################################
# bot methods
# start dialog
start <- function(bot, update) {
#
# Send query
bot$sendMessage(update$message$chat_id,
text = "ะะฒะตะดะธ ัะฒะพั ะธะผั")
# ะฟะตัะตะบะปััะฐะตะผ ัะพััะพัะฝะธะต ะดะธะฐะปะพะณะฐ ะฒ ัะตะถะธะผ ะพะถะธะดะฐะฝะธั ะฒะฒะพะดะฐ ะธะผะตะฝะธ
set_state(chat_id = update$message$chat_id, state = 'wait_name')
}
# get current chat state
state <- function(bot, update) {
chat_state <- get_state(update$message$chat_id)
# Send state
bot$sendMessage(update$message$chat_id,
text = unlist(chat_state))
}
# reset dialog state
reset <- function(bot, update) {
set_state(chat_id = update$message$chat_id, state = 'start')
}
# enter username
enter_name <- function(bot, update) {
uname <- update$message$text
# Send message with name
bot$sendMessage(update$message$chat_id,
text = paste0(uname, ", ะฟัะธััะฝะพ ะฟะพะทะฝะฐะบะพะผะธััั, ั ะฑะพั!"))
# ะะฐะฟะธััะฒะฐะตะผ ะธะผั ะฒ ะณะปะพะฑะฐะปัะฝัั ะฟะตัะตะผะตะฝะฝัั
#username <<- uname
set_chat_data(update$message$chat_id, 'name', uname)
# ะกะฟัะฐะฒัะธะฒะฐะตะผ ะฒะพะทัะฐัั
bot$sendMessage(update$message$chat_id,
text = "ะกะบะพะปัะบะพ ัะตะฑะต ะปะตั?")
# ะะตะฝัะตะผ ัะพััะพัะฝะธะต ะฝะฐ ะพะถะธะดะฐะฝะธะต ะฒะฒะพะดะฐ ะธะผะตะฝะธ
set_state(chat_id = update$message$chat_id, state = 'wait_age')
}
# enter user age
enter_age <- function(bot, update) {
uage <- as.numeric(update$message$text)
# ะฟัะพะฒะตััะตะผ ะฑัะปะพ ะฒะฒะตะดะตะฝะพ ัะธัะปะพ ะธะปะธ ะฝะตั
if ( is.na(uage) ) {
# ะตัะปะธ ะฒะฒะตะดะตะฝะพ ะฝะต ัะธัะปะพ ัะพ ะฟะตัะตัะฟัะฐัะธะฒะฐะตะผ ะฒะพะทัะฐัั
bot$sendMessage(update$message$chat_id,
text = "ะขั ะฒะฒัะป ะฝะตะบะพััะตะบัะฝัะต ะดะฐะฝะฝัะต, ะฒะฒะตะดะธ ัะธัะปะพ")
} else {
# ะตัะปะธ ะฒะฒะตะดะตะฝะพ ัะธัะปะพ ัะพะพะฑัะฐะตะผ ััะพ ะฒะพะทัะฐัั ะฟัะธะฝัั
bot$sendMessage(update$message$chat_id,
text = "ะะ, ะฒะพะทัะฐัั ะฟัะธะฝัั")
# ะทะฐะฟะธััะฒะฐะตะผ ะณะปะพะฑะฐะปัะฝัั ะฟะตัะตะผะตะฝะฝัั ั ะฒะพะทัะฐััะพะผ
#userage <<- uage
set_chat_data(update$message$chat_id, 'age', uage)
# ัะพะพะฑัะฐะตะผ ะบะฐะบะธะต ะดะฐะฝะฝัะต ะฑัะปะธ ัะพะฑัะฐะฝั
username <- get_chat_data(update$message$chat_id, 'name')
userage <- get_chat_data(update$message$chat_id, 'age')
bot$sendMessage(update$message$chat_id,
text = paste0("ะขะตะฑั ะทะพะฒัั ", username, " ะธ ัะตะฑะต ", userage, " ะปะตั. ะัะดะตะผ ะทะฝะฐะบะพะผั"))
# ะฒะพะทะฒัะฐัะฐะตะผ ะดะธะฐะปะพะณ ะฒ ะธัั
ะพะดะฝะพะต ัะพััะพัะฝะธะต
set_state(chat_id = update$message$chat_id, state = 'start')
}
}
เดเดเตเดเตพ 5 เดฐเตเดคเดฟเดเตพ เดธเตเดทเตเดเดฟเดเตเดเต:
- เดเดฐเดเดญเดฟเดเตเดเตเด - เดเดฐเต เดกเดฏเดฒเตเดเต เดเดฐเดเดญเดฟเดเตเดเตเด
- เดธเดเดธเตเดฅเดพเดจเด - เดจเดฟเดฒเดตเดฟเดฒเต เดเดพเดฑเตเดฑเต เดจเดฟเดฒ เดจเตเดเตเด
- เดชเตเดจเดเดธเดเตเดเดฎเดพเดเตเดเตเด - เดจเดฟเดฒเดตเดฟเดฒเต เดเดพเดฑเตเดฑเต เดจเดฟเดฒ เดชเตเดจเดเดธเดเตเดเดฎเดพเดเตเดเตเด
- enter_name - เดฌเตเดเตเดเต เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเต เดเตเดฆเดฟเดเตเดเตเดจเตเดจเต
- enter_age - เดฌเตเดเตเดเต เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเดพเดฏเด เดเตเดฆเดฟเดเตเดเตเดจเตเดจเต
เดฐเตเดคเดฟ start
เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเต เดเตเดฆเดฟเดเตเดเตเดเดฏเตเด เดเดพเดฑเตเดฑเต เดจเดฟเดฒ เดฎเดพเดฑเตเดฑเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเด_เดชเตเดฐเต, เด
เดคเดพเดฏเดคเต. เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเต เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเต เดธเตเดฑเตเดฑเดพเตปเดกเตเดฌเต เดเตเดฏเตเดฏเดพเตป.
เด
เดเตเดคเตเดคเดคเดพเดฏเดฟ, เดจเดฟเดเตเดเตพ เดชเตเดฐเต เด
เดฏเดฏเตเดเตเดเตเดเดฏเตเด เด
เดคเต เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต enter_name
, เดฌเตเดเตเดเต เดจเดฟเดเตเดเดณเต เด
เดญเดฟเดตเดพเดฆเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเต, เดฒเดญเดฟเดเตเด เดชเตเดฐเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดฒเตเดเตเดเต เดเดดเตเดคเตเดจเตเดจเต, เดเตเดเดพเดคเต เดเดพเดฑเตเดฑเต เดธเตเดฑเตเดฑเตเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดฎเดพเดฑเตเดฑเตเดจเตเดจเต เดเดพเดคเตเดคเดฟเดฐเดฟเดชเตเดชเต_เดชเตเดฐเดพเดฏเด.
เด เดเดเตเดเดคเตเดคเดฟเตฝ, เดจเดฟเดเตเดเตพ เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเดพเดฏเดคเตเดคเดฟเดฒเตเดเตเดเต เดชเตเดฐเดตเตเดถเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดฌเตเดเตเดเต เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเต. เดจเดฟเดเตเดเตพ เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเดพเดฏเด เด
เดฏเดฏเตเดเตเดเตเดจเตเดจเต, เดฌเตเดเตเดเต เดธเดจเตเดฆเตเดถเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต, เดจเดฟเดเตเดเตพ เดเดฐเต เดจเดฎเตเดชเดฑเดฟเดจเต เดชเดเดฐเด เดเตเดฑเดเตเดเต เดตเดพเดเดเด เด
เดฏเดเตเดเดพเตฝ, เด
เดคเต เดชเดฑเดฏเตเด: ะขั ะฒะฒัะป ะฝะตะบะพััะตะบัะฝัะต ะดะฐะฝะฝัะต, ะฒะฒะตะดะธ ัะธัะปะพ
, เดจเดฟเดเตเดเดณเตเดเต เดกเดพเดฑเตเดฑ เดตเตเดฃเตเดเตเด เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเด. เดจเดฟเดเตเดเตพ เดเดฐเต เดจเดฎเตเดชเตผ เด
เดฏเดเตเดเดพเตฝ, เดฌเตเดเตเดเต เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเดพเดฏเด เด
เดเดเตเดเดฐเดฟเดเตเดเดคเดพเดฏเดฟ เดฑเดฟเดชเตเดชเตเตผเดเตเดเตเดเตเดฏเตเดฏเตเด, เดฒเดญเดฟเดเตเด เดกเดพเดฑเตเดฑ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดฒเตเดเตเดเต เดเดดเตเดคเตเดเดฏเตเด เดจเดฟเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดฒเดญเดฟเดเตเด เดเดฒเตเดฒเดพ เดกเดพเดฑเตเดฑเดฏเตเด เดฑเดฟเดชเตเดชเตเตผเดเตเดเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดเดพเดฑเตเดฑเต เดจเดฟเดฒ เด
เดคเดฟเดจเตเดฑเต เดฏเดฅเดพเตผเดคเตเดฅ เดธเตเดฅเดพเดจเดคเตเดคเตเดเตเดเต เดคเดฟเดฐเดฟเดเต เดจเตฝเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด, เด
เดคเดพเดฏเดคเต. เดตเดฟ start
.
เดฐเตเดคเดฟ เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจเดคเดฟเดฒเตเดเต state
เดจเดฟเดเตเดเตพเดเตเดเต เดเดชเตเดชเตเตพ เดตเตเดฃเดฎเตเดเตเดเดฟเดฒเตเด เดจเดฟเดฒเดตเดฟเดฒเต เดเดพเดฑเตเดฑเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเต เด
เดญเตเดฏเตผเดคเตเดฅเดฟเดเตเดเดพเด reset
เดเดพเดฑเตเดฑเต เด
เดคเดฟเดจเตเดฑเต เดฏเดฅเดพเตผเดคเตเดฅ เด
เดตเดธเตเดฅเดฏเดฟเดฒเตเดเตเดเต เดคเดฟเดฐเดฟเดเต เดเตเดฃเตเดเตเดตเดฐเดฟเด.
เดธเดจเตเดฆเตเดถ เดซเดฟเตฝเดเตเดเดฑเตเดเตพ
เดเดเตเดเดณเตเดเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเดฐเต เดฌเตเดเตเดเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด เดชเตเดฐเดงเดพเดจเดชเตเดชเตเดเตเด เดญเดพเดเดเตเดเดณเดฟเตฝ เดเดจเตเดจเดพเดฃเดฟเดคเต. เดฎเตเดธเตเดเต เดซเดฟเตฝเดเตเดเดฑเตเดเดณเตเดเต เดธเดนเดพเดฏเดคเตเดคเตเดเตเดฏเดพเดฃเต เดฌเตเดเตเดเต เดจเดฟเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดจเตเดคเต เดตเดฟเดตเดฐเดเตเดเดณเดพเดฃเต เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเตเดจเตเดจเตเด เด เดคเต เดเดเตเดเดจเต เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเดฃเดฎเตเดจเตเดจเตเด เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเตเด.
เดชเดฆเตเดงเดคเดฟเดฏเดฟเตฝ
เดธเดจเตเดฆเตเดถ เดซเดฟเตฝเดเตเดเตผ เดเตเดกเต:
# ###########################################################
# message state filters
# ัะธะปััั ัะพะพะฑัะตะฝะธะน ะฒ ัะพััะพัะฝะธะธ ะพะถะธะดะฐะฝะธั ะธะผะตะฝะธ
MessageFilters$wait_name <- BaseFilter(function(message) {
get_state( message$chat_id ) == "wait_name"
}
)
# ัะธะปััั ัะพะพะฑัะตะฝะธะน ะฒ ัะพััะพัะฝะธะธ ะพะถะธะดะฐะฝะธั ะฒะพะทัะฐััะฐ
MessageFilters$wait_age <- BaseFilter(function(message) {
get_state( message$chat_id ) == "wait_age"
}
)
เดซเดฟเตฝเดเตเดเดฑเตเดเดณเดฟเตฝ เดเดเตเดเตพ เดฎเตเดฎเตเดชเต เดเดดเตเดคเดฟเดฏ เดซเดเดเตเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต get_state()
, เดเดพเดฑเตเดฑเดฟเดจเตเดฑเต เดจเดฟเดฒเดตเดฟเดฒเต เด
เดตเดธเตเดฅ เด
เดญเตเดฏเตผเดคเตเดฅเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต. เด เดซเดเดเตโเดทเดจเต 1 เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเต, เดเดพเดฑเตเดฑเต เดเดกเดฟ เดฎเดพเดคเตเดฐเดฎเต เดเดตเดถเตเดฏเดฎเตเดณเตเดณเต.
เด
เดเตเดคเตเดค เดซเดฟเตฝเดเตเดเตผ เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเด_เดชเตเดฐเต เดเดพเดฑเตเดฑเต เดเดฐเต เด
เดตเดธเตเดฅเดฏเดฟเดฒเดพเดฏเดฟเดฐเดฟเดเตเดเตเดฎเตเดชเตเตพ เดธเดจเตเดฆเตเดถเดเตเดเตพ เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเต wait_name
, เด
เดคเดจเตเดธเดฐเดฟเดเตเดเต เดซเดฟเตฝเดเตเดเตผ เดเดพเดคเตเดคเดฟเดฐเดฟเดชเตเดชเต_เดชเตเดฐเดพเดฏเด เดเดพเดฑเตเดฑเต เดเดฐเต เด
เดตเดธเตเดฅเดฏเดฟเดฒเดพเดฏเดฟเดฐเดฟเดเตเดเตเดฎเตเดชเตเตพ เดธเดจเตเดฆเตเดถเดเตเดเตพ เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเต wait_age
.
เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเดตเตผ
เดนเดพเตปเดกเตเดฒเดฑเตเดเดณเตเดณเตเดณ เดซเดฏเตฝ เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจเต เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเดตเตผ.เดเตผ, เดเตเดเดพเดคเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเตเดกเต เดเดฃเตเดเต:
# ###########################################################
# handlers
# command handlers
start_h <- CommandHandler('start', start)
state_h <- CommandHandler('state', state)
reset_h <- CommandHandler('reset', reset)
# message handlers
## !MessageFilters$command - ะพะทะฝะฐัะฐะตั ััะพ ะบะพะผะฐะฝะดั ะดะฐะฝะฝัะต ะพะฑัะฐะฑะพััะธะบะธ ะฝะต ะพะฑัะฐะฑะฐััะฒะฐัั,
## ัะพะปัะบะพ ัะตะบััะพะฒัะต ัะพะพะฑัะตะฝะธั
wait_age_h <- MessageHandler(enter_age, MessageFilters$wait_age & !MessageFilters$command)
wait_name_h <- MessageHandler(enter_name, MessageFilters$wait_name & !MessageFilters$command)
เดเดฆเตเดฏเด เดเดเตเดเตพ เดเดฎเดพเตปเดกเต เดนเดพเตปเดกเตโเดฒเดฑเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต, เด เดคเต เดเดฐเต เดกเดฏเดฒเตเดเต เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เด เดคเต เดชเตเดจเดเดธเดเตเดเดฎเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดจเดฟเดฒเดตเดฟเดฒเต เด เดตเดธเตเดฅ เด เดจเตเดตเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดฐเตเดคเดฟเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเด.
เด
เดเตเดคเตเดคเดคเดพเดฏเดฟ, เดฎเตเดฎเตเดชเดคเตเดคเต เดเดเตเดเดคเตเดคเดฟเตฝ เดธเตเดทเตเดเดฟเดเตเด เดซเดฟเตฝเดเตเดเดฑเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดเตเดเตพ 2 เดธเดจเตเดฆเตเดถ เดนเดพเตปเดกเตโเดฒเดฑเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดเดฏเตเด เด
เดตเดฏเดฟเดฒเตเดเตเดเต เดเดฐเต เดซเดฟเตฝเดเตเดเตผ เดเตเตผเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต !MessageFilters$command
, เด
เดเตเดเดจเต เดจเดฎเตเดเตเดเต เดเดคเต เดเดพเดฑเตเดฑเต เด
เดตเดธเตเดฅเดฏเดฟเดฒเตเด เดเดฎเดพเตปเดกเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเดพเด.
เดฌเตเดเตเดเต เดฒเตเดเตเดเต เดเตเดกเต
เดเดชเตเดชเตเตพ เดจเดฎเตเดเตเดเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเดพเตป เดเดฒเตเดฒเดพเด เดคเดฏเตเดฏเดพเดฑเดพเดฃเต, เดฌเตเดเตเดเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเตเดฐเดงเดพเดจ เดเตเดกเต เดซเดฏเดฒเดฟเดฒเตเดฃเตเดเต เดฌเตเดเตเดเต.เดเตผ.
library(telegram.bot)
library(tidyverse)
library(RSQLite)
library(DBI)
library(configr)
# ะฟะตัะตั
ะพะดะธะผ ะฒ ะฟะฐะฟะบั ะฟัะพะตะบัะฐ
setwd(Sys.getenv('TG_BOT_PATH'))
# ัะธัะฐะตะผ ะบะพะฝัะธะณ
cfg <- read.config('config.cfg')
# ัะพะทะดะฐัะผ ัะบะทะตะผะฟะปัั ะฑะพัะฐ
updater <- Updater(cfg$bot_settings$bot_token)
# ะะฐะณััะทะบะฐ ะบะพะผะฟะพะฝะตะฝัะพะฒ ะฑะพัะฐ
source('db_bot_function.R') # ััะฝะบัะธะธ ะดะปั ัะฐะฑะพัั ั ะะ
source('bot_methods.R') # ะผะตัะพะดั ะฑะพัะฐ
source('message_filters.R') # ัะธะปัััั ัะพะพะฑัะตะฝะธะน
source('handlers.R') # ะพะฑัะฐะฑะพััะธะบะธ ัะพะพะฑัะตะฝะธะน
# ะะพะฑะฐะฒะปัะตะผ ะพะฑัะฐะฑะพััะธะบะธ ะฒ ะดะธัะฟะตััะตั
updater <- updater +
start_h +
wait_age_h +
wait_name_h +
state_h +
reset_h
# ะะฐะฟััะบะฐะตะผ ะฑะพัะฐ
updater$start_polling()
เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดเดเตเดเตพเดเตเดเต เด เดฌเตเดเตเดเต เดฒเดญเดฟเดเตเดเต:
เดเดคเต เดธเดฎเดฏเดคเตเดคเตเด เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต /state
เดจเดฟเดฒเดตเดฟเดฒเต เดเดพเดฑเตเดฑเต เดจเดฟเดฒเดฏเตเด เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฎเตเดเตเดเต เด
เดจเตเดตเตเดทเดฟเดเตเดเดพเด /reset
เดเดพเดฑเตเดฑเต เด
เดคเดฟเดจเตเดฑเต เดฏเดฅเดพเตผเดคเตเดฅ เด
เดตเดธเตเดฅเดฏเดฟเดฒเตเดเตเดเต เดคเดฟเดฐเดฟเดเต เดจเตฝเดเตเดเดฏเตเด เดกเดฏเดฒเตเดเต เดตเตเดฃเตเดเตเด เดเดฐเดเดญเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด.
เดคเตเดฐเตเดฎเดพเดจเด
เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ, เดเดฐเต เดฌเตเดเตเดเดฟเดจเตเดณเตเดณเดฟเตฝ เดเดฐเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดเดเตเดเดจเต เดเดชเดฏเตเดเดฟเดเตเดเดพเดฎเตเดจเตเดจเตเด เดเดพเดฑเตเดฑเต เดจเดฟเดฒ เดฐเตเดเดชเตเดชเตเดเตเดคเตเดคเดฟ เดคเตเดเตผเดเตเดเดฏเดพเดฏ เดฒเตเดเดฟเดเตเดเตฝ เดกเดฏเดฒเตเดเตเดเตพ เดเดเตเดเดจเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเดฎเตเดจเตเดจเตเด เดเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเดฟ.
เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเดเตเดเตพ เดเดฑเตเดฑเดตเตเด เดชเตเดฐเดพเดเตเดคเดฎเดพเดฏ เดเดฆเดพเดนเดฐเดฃเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเต, เด เดคเตเดตเดดเดฟ เด เดคเตเดคเดฐเด เดฌเตเดเตเดเตเดเตพ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดถเดฏเด เดจเดฟเดเตเดเตพเดเตเดเต เดฎเดจเดธเดฟเดฒเดพเดเตเดเดพเตป เดเดณเตเดชเตเดชเดฎเดพเดเตเด; เดชเตเดฐเดพเดฏเตเดเดฟเดเดฎเดพเดฏเดฟ, เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดเตเดคเตฝ เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดฏ เดกเดฏเดฒเตเดเตเดเตพ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด.
เด เดชเดฐเดฎเตเดชเดฐเดฏเดฟเดฒเต เด เดเตเดคเตเดค เดฒเตเดเดจเดคเตเดคเดฟเตฝ, เดฌเตเดเตเดเต เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเตเดเต เดตเดฟเดตเดฟเดง เดฐเตเดคเดฟเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด เดตเดเดพเดถเดเตเดเตพ เดเดเตเดเดจเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดเตเดเดพเดฎเตเดจเตเดจเต เดจเดฎเตเดฎเตพ เดชเด เดฟเดเตเดเตเด.
เด เดตเดฒเดเดฌเด: www.habr.com