acidpop / xpebot Goto Github PK
View Code? Open in Web Editor NEWXPEnology Telegram BOT with telepot
XPEnology Telegram BOT with telepot
Traceback (most recent call last):
File "/volume1/homes/username/xpebot/main.py", line 10, in
import BotManager
File "/volume1/homes/username/xpebot/BotManager.py", line 24, in
import rssManager
ImportError: No module named rssManager
실행시 에러가 납니다.
현재 받아오는 정보와 기상청 정보와 대조해보니 실시간 정보가 아닌듯 합니다.
오후 10시에 받아 온것과 오전 12시 그러니깐 조금전 받아온것과는 정보가 다르지만...
오전 12시 것의 삼성동 지역을 보면...지역은 다른데 전부 같은 정보를 받아 옵니다.
////////////////////////////////////////////////////////////////////////
오후 10:41
전국 날씨 선택 또는 동네 이름을 입력하세요
논현동
인천광역시 남동구 논현동 날씨
날씨 : 구름 조금
온도 : -2.1'C
풍속 : 2.1m/s
풍향 : 북서향
습도 : 58%
강수 확률 : 10%
////////////////////////////////////////////////////////////////////////
오전 12:08
전국 날씨 선택 또는 동네 이름을 입력하세요
삼성동
서울특별시 관악구 삼성동 날씨
날씨 : 구름 조금
온도 : -4.2'C
풍속 : 1.1m/s
풍향 : 북서향
습도 : 66%
강수 확률 : 10%
대전광역시 동구 삼성동 날씨
날씨 : 구름 조금
온도 : -4.2'C
풍속 : 1.1m/s
풍향 : 북서향
습도 : 66%
강수 확률 : 10%
전라북도 익산시 삼성동 날씨
날씨 : 구름 조금
온도 : -4.2'C
풍속 : 1.1m/s
풍향 : 북서향
습도 : 66%
강수 확률 : 10%
경상남도 양산시 삼성동 날씨
날씨 : 구름 조금
온도 : -4.2'C
풍속 : 1.1m/s
풍향 : 북서향
습도 : 66%
강수 확률 : 10%
경상남도 오늘날씨 요약
중국 상해부근에 위치한 고기압의 영향을 받겠습니다.
부산, 울산, 창원, 경상남도는 대체로 맑겠습니다.
확인 차 git pull 체크 해보니...
server> cd /var/services/homes/name/xpebot
server> /usr/local/git/bin/git pull
*** Please tell me who you are.
Run
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
이렇게 뜹니다. github 가 바뀐건가 싶어서 다른것도 체크 해 봤는데...
다른건 문제 없는듯한데...
Already up-to-date.
라고 뜹니다.
git clone "https://github.com/acidpop/xpebot"
Cloning into 'xpebot'...
fatal: Unable to find remote helper for 'https'
기존 설치된걸 git pull 로 업데이트 하려니 안 되서 재설치하려해도 안 되네요.
https 가 아닌 다른 경로가 필요한건지 잘 모르겠습니다.
server> cd /volume1/homes/username/xpebot
server> ./bot.sh restart
Usage : bot.sh [ start | stop | chk ]
bot.sh.ori 에는 restart 옵션이 있는데 bot.sh 에는 없네요. 직접 수정해야 하나요?
Recent changes
8.3 (2016-07-17)
Fixed urllib3==1.9.1 in setup.py
현재 8.3 인데 수정되었나요? 따로 확인 안해봐서 문의 드립니다.
최근까지 잘쓰다가 왠진몰라도 다운로드스테이션알림만 안오더라고요
로그를 살펴보았는데..
2016-03-31 17:49:54 [INFO] recv signal : 15
2016-03-31 17:49:54 [INFO] recv signal : 15
2016-03-31 17:49:55 [INFO] recv signal : 15
2016-03-31 17:49:55 [INFO] recv signal : 15
2016-03-31 17:49:56 [INFO] recv signal : 15
2016-03-31 17:49:56 [INFO] recv signal : 15
2016-03-31 17:49:56 [ERROR] dsdownload db_connect error
2016-03-31 17:49:56 [ERROR] could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
2016-03-31 17:50:00 [INFO] recv signal : 15
2016-03-31 17:50:00 [INFO] recv signal : 15
2016-03-31 17:53:18 [INFO] Telegram BOT Initialize...
2016-03-31 17:53:18 [INFO] Telegram BOT Init OK
2016-03-31 17:53:23 [ERROR] download_db_timer|DB Exception : (u"[Error]: Bad Request: Can't parse message text: Can't find end of the entity starting at byte offset 79", 400)
포트개방문제인거같아서...시놀로지 방화벽에서 5432열어보았는데도 안되네요..
갑자기 안되서...추정되는거는 다운로드스테이션을 패키지센터에서 재시작후 포트 열어주라는창이 떠서 허용해준것과
제어판에서 sms 알림 전체체크한것인데 후자는 관련없을꺼같고 ...
어떻게해야할까요?
webhook 시험중입니다.
bot.sh 와 xpebot.cfg 확인 해보셨나요?
수정...부탁 드립니다(?)
이게 문제거리가 될런지는 모르겠습니다.
동네 날씨는 제대로 받아오니 애초에 계획하신대로 잘 작동하고 있는것인지
명령어대로 지역별 날씨 요약을 제대로 받아와야 잘 작동하는 것인지 모르겠지만
날씨 요약을 한 곳만 특정해서 받아오기에 글 씁니다.
http://www.kma.go.kr/weather/forecast/summary.jsp?stnId=109&x=19&y=5
링크와 대조해봤는데...
동네 날씨는 입력한대로 잘 받아 옵니다.
그러나 뒤에 딸려나오는 예보요약은 경상북도 혹은 대전광역시 오늘날씨 요약 이라고 뜨면서
불러오는 정보는 서울,인천,경기도 것만 불러 옵니다.
의도하신대로 잘 작동하고 있는거라면 문제 없지만, 이 부분도 정상작동되어야 하지 않을까 싶어서요.
https://github.com/qsomazzi/synology
https://github.com/qsomazzi/synology/blob/master/src/Synology/Applications/DSM.php
이쪽은 최근까지 업데이트 중이고...
https://github.com/yannickcr/node-synology/blob/master/lib/dsm.js
이쪽은 벌써 오래전에 중단된 상태인듯...
DSM 모니터링 가능한 자료같은데 저는 봐도 사용법은 모르겠습니다.
대충 봐서는 API 를 통해서 DSM 접속하지 않고 정보를 볼 수 있는듯한데...
다른것보다 DSM 접속시 우측 위젯 중
리소스 모니터의 정보정도만 텔레그램으로 받아 볼 수 있어도 대박일듯 한데 말이죠.
/systeminfo 도 써 봤습니다. 이 보다 좀 더
CPU, RAM, LAN 포트, 서버 이름, 내부 아이피, 업타임, 저장소
요정도...되면 정말 DSM 에 등록해도 되지 않을까 싶습니다.
그나저나 건의사항은 어디다 글 올리나요?
Pull requests 에는 제가 쓸 수 있는게 아닌듯하고...
좋은 봇 감사드립니다.
새로운 .py 파일을 추가 및 설정하려면 어떻게 진행해야하는지 알고싶습니다
전에는 안그랬던거 같은데
NOTY_CHAT_ID, VALID_USER 설정이 두개가 잇는데
VALID_USER 에 등록된 사용자는 검색 다운로드 등을 할 수 잇지만
실제로 다운로드가 시작되엇는지 또는 완료되었는지 알림은 NOTY_CHAT_ID 이쪽으로 밖에 알림이 안가더라구요.
NOTY_CHAT_ID 에 ,로 구분 등록 가능하게 하고 등록된 만큼 메시지 뿌려주는게 어떨까요....?
신규 다운로드시 포스터도 첨부해서 알림 기능 가능할까요?
정말 계속 잘쓰고있던중에 문제가 생겨 해답을못찾아 여기에 남겨봅니다
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/telepot/init.py", line 1183, in get_from_telegram_server
allowed_updates=allowed_upd)
File "/usr/lib/python2.7/site-packages/telepot/init.py", line 1000, in getUpdates
return self._api_request('getUpdates', _rectify(p))
File "/usr/lib/python2.7/site-packages/telepot/init.py", line 491, in _api_request
return api.request((self._token, method, params, files), **kwargs)
File "/usr/lib/python2.7/site-packages/telepot/api.py", line 154, in request
r = fn(*args, **kwargs) # fn
must be thread-safe
File "/usr/lib/python2.7/site-packages/urllib3/request.py", line 150, in request_encode_body
return self.urlopen(method, url, **extra_kw)
File "/usr/lib/python2.7/site-packages/urllib3/poolmanager.py", line 326, in urlopen
response = conn.urlopen(method, u.request_uri, **kw)
File "/usr/lib/python2.7/site-packages/urllib3/connectionpool.py", line 670, in urlopen
**response_kw)
File "/usr/lib/python2.7/site-packages/urllib3/connectionpool.py", line 670, in urlopen
**response_kw)
File "/usr/lib/python2.7/site-packages/urllib3/connectionpool.py", line 670, in urlopen
**response_kw)
File "/usr/lib/python2.7/site-packages/urllib3/connectionpool.py", line 641, in urlopen
_stacktrace=sys.exc_info()[2])
File "/usr/lib/python2.7/site-packages/urllib3/util/retry.py", line 399, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
MaxRetryError: HTTPSConnectionPool(host='api.telegram.org', port=443): Max retries exceeded with url: /봇아이디/getUpdates (Caused by SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)'),))
dsm 6.2.2 24922 최신버전을 설치하고부터
이 에러가 뜹니다 전에 업데이트할때는 뜨지않고요
업데이트하고나서 telepot에러가 뜨길래
python ./get-pip.py
pip install telepot BeautifulSoup psycopg2 Pillow psutil
를 다시해주어 설치했습니다
https://api.telegram.org/bot토큰/getUpdates
을 nas나(curl -X GET) 메인컴에서 호출하면 정상적으로
{"ok":true,"result":[]} 가 나와서
방화벽 문제인가 싶지만 이것도아닌거같고.
봇은 문제없어보이고 어디가 문제인지 모르겠습니다 해외포럼봐도...
혹시 아시는부분이 있으신가요?
항상 평소엔 편하게받다 안되면 정말 불편해져버리는걸보면
xpebot은 정말필수품이네요..
저는 let's encrypt 와일드카드인증서를 acme.sh를 이용해 발급해서 사용하고있습니다.
참조
https://stackoverflow.com/questions/27835619/urllib-and-ssl-certificate-verify-failed-error
eternnoir/pyTelegramBotAPI#528
3시간마다 RESTART를 하다보니 3시간에 한번씩 알림 문자가 뜨는것을 없앨수는 없는건가요??
WATCH_DIR 는 정상적으로 설정되어 있습니다.
/torrentsearch 로 다운받을때는 잘 작동합니다.
/torkim 은 /var/services/homes/username/xpebot 에 .torrent 파일이 다운로드 됩니다.
/torkim 이 뭘까 궁금해서 보니 선택할 수 있는 파일 목록이 키보드가 아닌 대화창(?)에
직접 뜨는듯해서 깔끔하고 좋아 보입니다. 목록에서 여러개 다운로드도 되는듯 하구요.
다만, 씨앗파일이 WATCH_DIR에 다운로드 되지 않아 파일의 다운로드가 안 됩니다.
일정시간이 지나면 bot이 응답을 안 합니다.
/var/log/xpebot.log 를 대략 3시간정도의 대기상대가 지속되면 응답이 없는듯 합니다.
아침에도 bot이 바로 응답을 안해서 재작동 시키긴 했습니다.
2016-02-06 05:29:23 [INFO] cmd_handle - Command[/weather], cur_mode[weather]
2016-02-06 05:29:23 [INFO] current mode handler : weather
2016-02-06 05:29:23 [DEBUG] select code, sido, gugun, dong from kma_dongne where dong like '%/weather%';
2016-02-06 05:29:23 [ERROR] on_close - exception :
2016-02-06 05:29:23 [ERROR] local variable 'sido' referenced before assignment
2016-02-06 05:29:23 [ERROR] on_close - exception :
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/telepot/delegate.py", line 65, in wait_loop
j.on_message(msg)
File "/volume1/homes/username/xpebot/BotManager.py", line 178, in on_message
self.command_handler(unicode(msg['text']))
File "/volume1/homes/username/xpebot/BotManager.py", line 87, in command_handler
self.current_mode_handler(command)
File "/volume1/homes/username/xpebot/BotManager.py", line 72, in current_mode_handler
self.wt.GetDongneWether(self.sender, command)
File "/volume1/homes/username/xpebot/weather.py", line 111, in GetDongneWether
today, tomorrow = self.GetWeatherSummary(sido)
UnboundLocalError: local variable 'sido' referenced before assignment
재작동시키면 응답없던 상태에서 보낸 /weather 명령어를 실행하면서 로그에 error 가 남는듯 합니다.
[INFO] cmd_handle - Command[/weather], cur_mode[]
[INFO] cmd_handle - Command[/weather], cur_mode[weather]
이 부분은 날씨 조회를 명령하였으나 응답이 없어서 두번 세번 조회를 하다
안 되서 봇을 재시작하니 앞서 날아온 명령을 수행하다 발생한 오류로 보입니다.
처음 명령으로 weather 모드가 된 상태에서 두 세차례 날아온 명령어를 또 수행하느라...
이런 오류가 세번 정도 로그가 남아 있습니다.
시간상으로는 2시간 30분, 3시간 이상의 대기상태가 지속될시 봇이 응답없는 상태가 되는듯 합니다.
그러나 일정치 않은듯 합니다. 확실한건 봇이 응답없는 상태가되서 재시작을 해야하는 경우가 발생합니다.
나스당을 보니 다른 분도 같은 문제를 겪고 계시는 모양입니다.
weather_keyboard = {'keyboard': [[u'우리동네',u'우리동네',u'우리동네',u'전국 날씨'],[u'우리동네',u'우리동네',u'우리동네',u'우리동네']], 'resize_keyboard': True}
현재는 BotManager.py 를 편의상 위와같이 수정하여 동네 입력을 간단히 사용중입니다.
xpebot.cfg
이왕이면 정보 입력을 위해 수정해야하는 xpebot.cfg 에 해당항목을 넣을 수 있으면 좋지 않을까하여
문의 드립니다.
사용자 입장에서 주로 확인하게 되는 동네를 키보드로 띄울 수 있으면 더 편할거 같습니다.
온도는 기온으로, 'C 는 ℃ 로 변경되었으면 합니다.
기상청 정보나 포털에 보여지는 정보에도 대부분 기온으로 표시되고 있습니다.
단위는 ℃ 가 좀 더 나은듯 합니다.
고맙습니다.
webhook 시험중입니다.
torrent search 나 Magnet Link 등록 등의 기능 사용시
DB 에 INSERT 되는 동작을 수행 하면 어디선가 SIGTERM 시그널 후 SIGKILL 로 프로세스를 죽이는듯함.
해당 이슈 확인 중.
torrent search 또는 Magnet Link 등록은 사용하지 마시고 torkim 명령 이용 바랍니다.
Torrentkim 사용시에는 설정값에서 지정한 WATCH_DIR 로 다운로드 되는데,
gettfreea 의 경우 계정디렉으로 다운로드 됩니다.
참고하시기 바랍니다.
더불어 덕분에 편하게 잘 쓰고 있습니다.
감사합니다~
/torkim 명령어로 검색 후 다운로드하면 스테이션에서는 잘못된 torrent 파일이라며 다운로드가 안되는데요
로그를 확인해보니 아래와 같았습니다.
2017-03-28 14:36:54 [INFO] GetTypeValue - type:1, value:'https://torrentkim5.net/torrent_variety/833314.html'
2017-03-28 14:36:54 [INFO] TorrentKim bbs URL : https://torrentkim5.net/torrent_variety/833314.html
2017-03-28 14:36:56 [INFO] TorrentKim File URL : https://torrentkim5.net/bbs/download.php?bo_table=torrent_variety&wr_id=833314&no=
2017-03-28 14:36:56 [INFO] Torrent Title Found : 170223.해피투게더 3 「예능 공조 강하늘, 한재영, 하재숙, 신동, 김슬기 外」.H264.AAC.1080i CineBus.mp4.torrent
2017-03-28 14:36:56 [INFO] GetTorrentfile Exception : It may have been an ascii-encoded unicode string
2017-03-28 14:36:57 [INFO] File Move '/tmp/833314.torrent' to '/volume2/Media/TEMP/DS-Incoming/watch'
2017-03-28 14:36:57 [INFO] File '/tmp/833314.torrent' Download Complete
2017-03-28 14:37:08 [INFO] Bot send : 상태 : 잘못된 Torrent 파일
인코딩 문제 인거 같은데 어느 부분이 문제 인지 알 수 있을까요...?
xpebot 적용해보다 아래와 같이 다운로드스테이션에 토렌트 파일이 추가될때 오류가 발생합니다.
오류로그는 아래와 같습니다.
2016-10-22 03:06:31 [ERROR] download_db_timer Exception : Traceback (most recent call last):
File "/volume1/homes/admin/xpebot/dsdownload.py", line 390, in download_db_timer
self.bot.sendMessage(self.chat_id, msg, parse_mode='Markdown')
File "/usr/lib/python2.7/site-packages/telepot/init.py", line 409, in sendMessage
return self._api_request('sendMessage', _rectify(p))
File "/usr/lib/python2.7/site-packages/telepot/init.py", line 398, in _api_request
return api.request((self._token, method, params, files), **kwargs)
File "/usr/lib/python2.7/site-packages/telepot/api.py", line 131, in request
return _parse(r)
File "/usr/lib/python2.7/site-packages/telepot/api.py", line 126, in _parse
raise exception.TelegramError(description, error_code, data)
TelegramError: (u'Bad Request: Wrong message entity: Wrong URL host', 400, {u'error_code': 400, u'ok': False, u'description': u'Bad Request: Wrong message entity: Wrong URL host'})
텔레그램에서 메세지를 보내는 과정에서 URL 잘못되고 있는것 같은데, 혹시 어떤부분을 확인해야할지 조언부탁드립니다. 감사합니다.
Enter 'help' for a list of built-in commands.
Server> cd /volume1/homes/username
Server> cd xpebot
Server> ./bot.sh chk
XPEnology Telegram BOT : Stopped
Server> ./bot.sh start
Starting XPEnology Telegram BOT...
XPEnology Telegram BOT : Stopped
Server> Execute Path : /volume1/homes/username/xpebot
Execute Path : /volume1/homes/username/xpebot
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/telepot/init.py", line 359, in get_from_telegram_server
result = self.getUpdates(offset=offset, timeout=timeout)
File "/usr/lib/python2.7/site-packages/telepot/init.py", line 286, in getUpdates
return self._parse(r)
File "/usr/lib/python2.7/site-packages/telepot/init.py", line 178, in _parse
raise TelegramError(data['description'], data['error_code'])
TelegramError: (u'[Error]: Conflict: terminated by other long poll or webhook', 409)
README.md 의 7, 8 번 설정은 했습니다. bot 실행시 같은 에러가 반복 됩니다.
유용한 봇 만들어 주셔서 고맙습니다. 대단하십니다.
동네 날씨 조회시
동 이름은 같으나 시, 도, 군이 다를 경우 최종 동의 시,도,군에 대해서만
날씨 요약 정보를 가져오는 문제가 있습니다.
다음 버전에 반영 예정입니다.
server> cd /var/services/homes/username/xpebot
server> /usr/local/git/bin/git pull
Updating 18fcae9..39dbe1f
error: Your local changes to the following files would be overwritten by merge:
BotManager.py
Please, commit your changes or stash them before you can merge.
Aborting
http://blog.acidpop.kr/228
이렇게 변경을하지 않고, "/usr/local/git/bin/git pull" 이렇게하면 업데이트는 되는듯 합니다.
헌데, BotManager.py 를 어떻게 하라는건지 모르겠네요. 권한관련 문제인듯한데...
DSM 6.0 이상에서 xpebot 이 중복 실행 될수 있는 버그가 발견 되었습니다.
bot.sh 에서 ps 명령어를 이용해 봇을 중지 하거나 체크 하는데
DSM 6.0 에서는 ps w 명령이 아닌 ps -ef 명령등을 이용해서 봇 작동을 체크 해야 합니다.
해당 문제에 관해 DSM 6.0 사용자 분께서는 일단 사용에 유의해 주시기 바랍니다.
키보드 건의사항
그저 건의사항이니 참고만 해주세요. 이렇게도 괜찮을듯 싶다...정도로
https://telegram.me/weatherman_bot
알려주신대로 /setcommands 로 등록해서 사용하고 있습니다.
커스텀 키보드라고 하나요? 박스로 메뉴처럼 나오는게 예쁘더라구요.
봇 중에 weatherman의 키보드가 꽤 괜찮아 보입니다.
[weather], [torrentsearch]
[wol], [cancel]
[help]
[back (cancel)]
[wollist]
[addwol], [delwol]
모바일에서 텔레그램을 주로 사용하다보니 직관적인게 좋은듯 싶어서요.
제가 할 줄 알면 조금이라도 거들어 드리고 싶은데...그게 안 되네요 ㅠ.ㅜ
물론, 현재도 사용하는데 아무 지장없이 잘 사용하고 있습니다.
WOL 같은 경우 등록해서 사용중인데, 정말 편합니다.
용량 문제로 Volume1 --> Volume3로 변경해서 사용 중인데,
패스가 절대경로로 지정되어 있어서 서비스 시작시 문제가 발생합니다.
다른 시놀로지 어플의 경우에는 /var/services/homes 경로를 쓰는 것 같습니다.
root 30827 29610 0 00:30 pts/14 00:00:00 grep --color=auto python
root 20068 20040 0 09:11 pts/10 00:00:00 grep --color=auto python
아침에 다시 확인해보니까 또 가출했네요
02:53에 작동했지만 03:13에 있었떤 알림은 안왔던 것으로 보아 3시에 무슨 일이 있었나봅니다
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.