Skip to content

chenhan20/pythonTelegramBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pythonTelegramBot

python Telegram Bot

已完成功能

  • bot 註冊(將資訊存入DB 並每日抓取發送)
  • 發送每日收盤資訊(個股收盤價、三大法人買賣超、三大法人個股買賣超)
  • 每日ROLEX錶店價格整理

未完成功能

  • 根據不同USER 發送不同追蹤的股票資訊

指令

  • /start 開始訂閱機器人(會收到訊息)
  • /end 取消訂閱機器人
pip install python-telegram-bot --upgrade
pip install configparser
pip install dataframe-image
pip install tabulate
pip install tabulate
pip install prettytable
pip install pyTelegramBotAPI
pip install fredapi

需新建 setting.ini 內容為

[DEFAULT]
TOKEN = YOUR BOT TOKEN
DATABASE = YOUR BOT DATABASE
USER = YOUR BOT USER
PASSWORD = YOUR BOT PASSWORD
PORT = YOUR BOT PORT
FRED_API_KEY=YOUR FRED API KEY 自己去fred網站辦帳號拿KEY

若部屬至heroku

token改為這樣取 然後heroku要設定 Settings -> Config Vars -> 新增一個key = TOKEN ,value = 你的TOKEN 填寫自己bot的TOKEN

heroku上面的是使用SSL連線 不需要那麼多資訊 只要Heroku上面的url就行(因為在同一包內)

token = os.environ['TOKEN']
databaseUrl = os.environ['DATABASE_URL']

設定排程

heroku Scheduled 是使用UTC時間 記得要轉換

fileName Schedule說明 執行時間
sendStockDayPrice.py 個股收盤價 每天14:00
sendThree.py 三大法人買賣超 每天15:00
sendStockBuySell.py 三大法人個股買賣超 每天16:30
sendYfinance.py 美股三大指數收盤 每天08:30
sendUsaStock.py 美股個股收盤 每天08:30
sendCrypto.py 加密貨幣價格 每天08:30

參考資料

在裡面看到可以使用這種方法攔截接收訊息 就不用再做一個webhook了
@bot.message_handler(commands=['start'])

Table語法

INSERT INTO public.follow_stock(user_id,stock_code)
VALUES 
   (1, '2330'),
   (1, '2377'),
   (1, '2308'),
   (1, '2382'),
   (1, '2886'),
   (1, '2603'),
   (1, '2609'),
   (1, '2606'),
   (1, '2615');
);

INSERT INTO public.system_parameter(name,value,update_on)
VALUES ('LAST_FRED_SEND_DATE', '0', now()) 
,('LAST_US_MARKET_SEND_DATE', '0', now())
,('LAST_US_STOCK_SEND_DATE', '0', now())
,('LAST_CRYPTO_SEND_DATE', '0', now())

update system_parameter set value = '0' where name = 'LAST_CRYPTO_SEND_DATE';
update system_parameter set value = '0' where name = 'LAST_US_MARKET_SEND_DATE';

update accounts set telegram_push_crypto_enabled
= true where telegram_push_enabled = true;

已解決問題

  • 有時三大法人資料會延遲 導致沒抓到資料 預計解法為 各個排成都要有一個當日有無發送成功的紀錄(未成功就要一直發) 問題為不想一直跑排程

尚未開發完成功能

  • 根據個人去區分follow_stock

About

python Telegram Bot 歡迎加入我的機器人

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published