Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

chenhan20/pythonTelegramBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

151 Commits

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

AltStyle によって変換されたページ (->オリジナル) /