텔레그램 cli 에 대하여 궁금한점 이 있습니다.
페이지 정보
작성자 천하무적 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일16-01-02 23:15 조회2,094회 댓글11건본문
안녕하세요 취미로 라즈베리파이를 취미로 구입하였으며 책상 구석에서 꺼 냈습니다.
바로 텔레그램cli 글 때문에요 ~
너무나 좋은 글 잘 보았습니다. 하나 하나 따라 해보며 완전 재미 있게 해보고 있는데요 몇번의 시행 착오 끝에 파이캠 사진 불러 오기 까지 했습니다 완전 성공 한거죠 ^^
다름이 아니라 질문은 텔레그램 API 봇을 기동 성공 하였으며 잘 동작 하오나, 문제는 다른 제 3자의 폰에서도 제가 만든 봇으로 검색을 하면 쳇이 가능하고 사진을 찍어서 전송 하네요 ㅜ..ㅜ
특정 전화 번호 및 아이디 만 응답하게 할수 있을까요? 프로그램 다뤄본적이 없어 도통 감을 잡을수가 없습니다. 도움이 필요 합니다. ㅜ.ㅜ
댓글목록
최고관리자님의 댓글

텔레그램 메시지를 처리하는 함수를 보면 아래처럼 메시지를 보내준 채팅방 ID를 꺼내서 저장합니다.
@bot.message_handler(func=lambda message: True)
def echo_all(message):
......
CHAT_ID = message.chat.id
message 객체에서 chat 객체를 보고 다시 id를 뽑아서 저장한 뒤 사용합니다. 이걸 아예 고정시켜버려서 특정 채팅창에만 반응하고 다른 채팅창인 경우 버리도록 만들 수 있습니다.
혹은 아래와 같은 코드로 특정 유저의 ID를 추출한 뒤, 해당 ID에만 반응하도록 할 수도 있습니다.
user_id = message.from_user.id
if user_id != my_id:
return
message 객체가 가진 정보 및 기타 객체의 정보들은 아래 페이지를 참고하세요.
https://github.com/eternnoir/pyTelegramBotAPI/blob/master/telebot/types.py
천하무적님의 댓글
천하무적 이름으로 검색 작성일
감사 합니다. 그런데 잘안되네요
100번쯤 시도 해 보겠습니다.
다시 한번 감사 합니다. ^
최고관리자님의 댓글


def echo_all(message):
위 함수 아래에 print message.from_user.id 를 넣으세요. 그리고 원하시는 계정으로 메시지를 보내서 user ID를 확인하세요. 여기서 확인한 ID를 비교해서 ID가 틀리면 실행하지 않도록 처리하면 됩니다~
천하무적님의 댓글
천하무적 이름으로 검색 작성일
네 감사 합니다.
아이디가 문자가 아닌 숫자로 되어 있었네요
답변주신 대로 하니 성공 하였습니다.
감사 합니다.
천하무적님의 댓글
천하무적 이름으로 검색 작성일
@bot.message_handler(regexp="[^/{1}[^/]|^\[[[:alnum:]]+\]$]")
def bot_slash_cmd(message):
global CHAT_ID
# Markup command handler
# update chat id
if CHAT_ID < 1:
config.set_chat_id(message.chat.id)
CHAT_ID = message.chat.id
escaped = message.text.replace('/', '')
#parse_command(message, escaped)
user_id = message.from_user.id
user_phone = [아이디1,아이디2,아이디3, ...]
for xx in user_phone:
if user_id == xx:
parse_command(message, message.text)
# Nomal text handler
# : for 1:1 chat with bot
@bot.message_handler(func=lambda message: True)
def echo_all(message):
global is_cctv_active
global CHAT_ID
global CCTV_URL
# update chat id
if CHAT_ID < 1:
config.set_chat_id(message.chat.id)
CHAT_ID = message.chat.id
user_id = message.from_user.id
user_phone = [아이디1,아이디2,아이디3, ...]
for xx in user_phone:
if user_id == xx:
parse_command(message, message.text)
pass
왕초보를 위한 파이션 for 부분을 참고 하여 전화번호가 여러개 일경우 위와 같이 처리하도록 만들었습니다.
혹시 필요하신분 있으시면 참고 하세요
왕초보가 뭐 하나 할려니 너무 힘드네요 ^^
도움을 주신 최고관리자님 감사 드립니다.
최고관리자님의 댓글


코드공유 감사합니다. 추후에 적어주신 코드처럼 white list, black list 기능을 구현해서 넣어야겠네요.
천하무적님의 댓글
천하무적 이름으로 검색 작성일
안녕하세요 또 찾아 왔습니다. ^^
이번에는 예제와 같이 온습도 센서를 HC-11을 사용하여 만들었습니다.
결과 대 만족 입니다.
알림 매크로 기능 너무 좋아요
ㅜ.ㅜ
헌대 문제가 생겼습니다.
추가로 모션 감지 센서를 현관에 달았으나 알림 및 매크로 설정을 하면 DB에 기록이 잘되던 값들이
더이상 기록이 되지 않고 비정상 동작을 합니다.
센서가 하나 일때는 알림 + 매크로 완전 정상 동작 합니다.
센서가 두개 일때는 알림 매크로 미 설정 상태에서는 둘다 DB자료 입력이 잘되요
헌데 알림을 등록하는 순간 딱 한번만 DB에 기록이 되고서는 이후 DB저장 및 알림 동작을 하지 않네요 ㅜ.ㅜ
소스를 보니 까만건 글씨요 하얀건 종이 이네요 ㅜ.ㅜ
일단 시간을 추가한 로그 파일 일부를 올려 봅니다.
WARNING:root:2016-01-27_22:24:48 Command received : Update sensor value (38, 19, 0, 0)
WARNING:root:2016-01-27_22:11:36 Update sensor value: cat1 = 1, cat2 = 1, devid = 140
WARNING:root:2016-01-27_22:24:48 Found noti triggered macro.
WARNING:root:2016-01-27_22:24:48Macro run with command: 출력 1 10
WARNING:root:Found 1 macro...
WARNING:root:2016-01-27_22:11:36 Check timer...
WARNING:root:2016-01-27_22:24:54 Command received : Update sensor value (37, 19, 0, 0)
WARNING:root:2016-01-27_22:11:36 Update sensor value: cat1 = 1, cat2 = 1, devid = 140
WARNING:root:2016-01-27_22:24:54 Found noti triggered macro.
WARNING:root:2016-01-27_22:24:54Macro run with command: 출력 1 10
WARNING:root:Found 1 macro...
WARNING:root:2016-01-27_22:25:00 Command received : Update sensor value (36, 20, 0, 0)
WARNING:root:2016-01-27_22:11:36 Update sensor value: cat1 = 1, cat2 = 1, devid = 140
WARNING:root:2016-01-27_22:25:00 Found noti triggered macro.
WARNING:root:2016-01-27_22:25:00Macro run with command: 움직임
WARNING:root:Found 1 macro...
WARNING:root:2016-01-27_22:25:07 Command received : Update sensor value (36, 20, 0, 0)
WARNING:root:2016-01-27_22:11:36 Update sensor value: cat1 = 1, cat2 = 1, devid = 140
WARNING:root:2016-01-27_22:25:07 Found noti triggered macro.
WARNING:root:2016-01-27_22:25:07Macro run with command: 움직임
WARNING:root:Found 1 macro...
WARNING:root:2016-01-27_22:25:13 Command received : Update sensor value (36, 20, 0, 0)
WARNING:root:2016-01-27_22:11:36 Update sensor value: cat1 = 1, cat2 = 1, devid = 140
WARNING:root:2016-01-27_22:25:13 Found noti triggered macro.
WARNING:root:2016-01-27_22:25:13Macro run with command: 움직임
WARNING:root:Found 1 macro...
WARNING:root:2016-01-27_22:25:16 Command received : Register device
WARNING:root:2016-01-27_22:11:36 Register device: name = 모션감지센서
WARNING:root:2016-01-27_22:25:19 Command received : Update sensor value (37, 20, 0, 0)
WARNING:root:2016-01-27_22:11:36 Update sensor value: cat1 = 1, cat2 = 1, devid = 140
WARNING:root:2016-01-27_22:25:19 Found noti triggered macro.
WARNING:root:2016-01-27_22:25:19Macro run with command: 출력 1 10
WARNING:root:2016-01-27_22:25:19 Found noti triggered macro.
WARNING:root:2016-01-27_22:25:21Macro run with command: 움직임
WARNING:root:Found 2 macro...
WARNING:root:2016-01-27_22:25:23 Command received : Register device
WARNING:root:2016-01-27_22:11:36 Register device: name = 모션감지센서
WARNING:root:2016-01-27_22:25:26 Command received : Update sensor value (37, 19, 0, 0)
WARNING:root:2016-01-27_22:25:26 Command received : Register device
WARNING:root:2016-01-27_22:11:36 Update sensor value: cat1 = 1, cat2 = 1, devid = 140
WARNING:root:2016-01-27_22:25:26 Found noti triggered macro.
WARNING:root:2016-01-27_22:25:26Macro run with command: 출력 1 10
WARNING:root:Found 1 macro...
WARNING:root:2016-01-27_22:11:36 Register device: name = 모션감지센서
WARNING:root:2016-01-27_22:25:32 Command received : Update sensor value (37, 19, 0, 0)
WARNING:root:2016-01-27_22:11:36 Update sensor value: cat1 = 1, cat2 = 1, devid = 140
WARNING:root:2016-01-27_22:25:32 Found noti triggered macro.
WARNING:root:2016-01-27_22:25:32Macro run with command: 출력 1 10
WARNING:root:Found 1 macro...
WARNING:root:2016-01-27_22:25:35 Command received : Register device
WARNING:root:2016-01-27_22:11:36 Register device: name = 모션감지센서
WARNING:root:2016-01-27_22:25:38 Command received : Update sensor value (37, 19, 0, 0)
WARNING:root:2016-01-27_22:25:38 Command received : Register device
WARNING:root:2016-01-27_22:11:36 Update sensor value: cat1 = 1, cat2 = 1, devid = 140
WARNING:root:2016-01-27_22:25:39 Found noti triggered macro.
WARNING:root:2016-01-27_22:25:39Macro run with command: 출력 1 10
WARNING:root:Found 1 macro...
WARNING:root:2016-01-27_22:11:36 Register device: name = 모션감지센서
WARNING:root:2016-01-27_22:25:44 Command received : Update sensor value (38, 19, 0, 0)
WARNING:root:2016-01-27_22:11:36 Update sensor value: cat1 = 1, cat2 = 1, devid = 140
WARNING:root:2016-01-27_22:25:45 Found noti triggered macro.
WARNING:root:2016-01-27_22:25:45Macro run with command: 출력 1 10
WARNING:root:Found 1 macro...
WARNING:root:2016-01-27_22:25:51 Command received : Update sensor value (37, 19, 0, 0)
WARNING:root:2016-01-27_22:11:36 Update sensor value: cat1 = 1, cat2 = 1, devid = 140
WARNING:root:2016-01-27_22:25:51 Found noti triggered macro.
WARNING:root:2016-01-27_22:25:51Macro run with command: 출력 1 10
WARNING:root:Found 1 macro...
WARNING:root:2016-01-27_22:11:36 Check timer...
WARNING:root:2016-01-27_22:25:57 Command received : Update sensor value (37, 19, 0, 0)
WARNING:root:2016-01-27_22:11:36 Update sensor value: cat1 = 1, cat2 = 1, devid = 140
WARNING:root:2016-01-27_22:25:57 Found noti triggered macro.
WARNING:root:2016-01-27_22:25:57Macro run with command: 출력 1 10
WARNING:root:Found 1 macro...
WARNING:root:2016-01-27_22:26:03 Command received : Update sensor value (100, 8, 0, 0)
WARNING:root:2016-01-27_22:26:03 Command received : Update sensor value (38, 19, 0, 0)
WARNING:root:2016-01-27_22:11:36 Update sensor value: cat1 = 1, cat2 = 18, devid = 190
WARNING:root:2016-01-27_22:26:09 Command received : Update sensor value (38, 19, 0, 0)
WARNING:root:2016-01-27_22:26:16 Command received : Update sensor value (100, 11, 0, 0)
WARNING:root:2016-01-27_22:26:16 Command received : Update sensor value (36, 19, 0, 0)
WARNING:root:2016-01-27_22:26:22 Command received : Update sensor value (37, 19, 0, 0)
WARNING:root:2016-01-27_22:26:28 Command received : Update sensor value (38, 19, 0, 0)
WARNING:root:2016-01-27_22:26:35 Command received : Update sensor value (36, 20, 0, 0)
WARNING:root:2016-01-27_22:26:35 Command received : Update sensor value (100, 7, 0, 0)
WARNING:root:2016-01-27_22:26:41 Command received : Update sensor value (37, 19, 0, 0)
WARNING:root:2016-01-27_22:26:47 Command received : Update sensor value (36, 19, 0, 0)
WARNING:root:2016-01-27_22:26:53 Command received : Update sensor value (38, 20, 0, 0)
WARNING:root:2016-01-27_22:27:00 Command received : Update sensor value (36, 19, 0, 0)
WARNING:root:2016-01-27_22:27:06 Command received : Update sensor value (36, 19, 0, 0)
WARNING:root:2016-01-27_22:27:12 Command received : Update sensor value (36, 20, 0, 0)
WARNING:root:2016-01-27_22:27:19 Command received : Update sensor value (38, 19, 0, 0)
WARNING:root:2016-01-27_22:27:25 Command received : Update sensor value (37, 19, 0, 0)
WARNING:root:2016-01-27_22:27:31 Command received : Update sensor value (37, 20, 0, 0)
WARNING:root:2016-01-27_22:27:37 Command received : Update sensor value (36, 19, 0, 0)
WARNING:root:2016-01-27_22:27:44 Command received : Update sensor value (38, 20, 0, 0)
WARNING:root:2016-01-27_22:27:50 Command received : Update sensor value (37, 19, 0, 0)
WARNING:root:2016-01-27_22:27:56 Command received : Update sensor value (37, 19, 0, 0)
WARNING:root:2016-01-27_22:28:03 Command received : Update sensor value (36, 19, 0, 0)
WARNING:root:2016-01-27_22:28:09 Command received : Update sensor value (38, 20, 0, 0)
WARNING:root:2016-01-27_22:28:15 Command received : Update sensor value (36, 19, 0, 0)
WARNING:root:2016-01-27_22:28:22 Command received : Update sensor value (38, 19, 0, 0)
WARNING:root:2016-01-27_22:28:28 Command received : Update sensor value (39, 20, 0, 0)
WARNING:root:2016-01-27_22:28:34 Command received : Update sensor value (37, 19, 0, 0)
WARNING:root:2016-01-27_22:28:40 Command received : Update sensor value (37, 20, 0, 0)
WARNING:root:2016-01-27_22:28:47 Command received : Update sensor value (36, 19, 0, 0)
WARNING:root:2016-01-27_22:28:53 Command received : Update sensor value (36, 19, 0, 0)
WARNING:root:2016-01-27_22:28:59 Command received : Update sensor value (36, 19, 0, 0)
WARNING:root:2016-01-27_22:29:06 Command received : Update sensor value (38, 19, 0, 0)
WARNING:root:2016-01-27_22:29:12 Command received : Update sensor value (37, 20, 0, 0)
WARNING:root:2016-01-27_22:29:14 Command received : Ping response
더이상 자료가 업데이트 되지 않습니다.
모든걸 다 지우고 재부팅을 하면 일단 정상 동작 하다가 알림+매크로가 발생이 되면 또 위와 비슷한 현상이 생깁니다.
감사 합니다. ㅠ.ㅠ
천하무적님의 댓글
천하무적 이름으로 검색
Exception in thread Thread-2:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/home/pi/tg/bot/DeviceManagerThread.py", line 81, in run
noti_ids = self.check_noti(recv)
File "/home/pi/tg/bot/DeviceManagerThread.py", line 498, in check_noti
if noti_on:
UnboundLocalError: local variable 'noti_on' referenced before assignment
최고관리자님의 댓글


헛.. 코드에 오류가 있었네요;;; DeviceManagerThread.py 파일을 여시고
def check_noti(self, recv): 함수 시작부분을 찾으세요.
for 반복문 - if 조건문 안에 noti_on = False 라고 선언된 라인이 있을거에요.
noti_on = False 라인을 if 조건문 위로 올려주세요.
그리고 제대로 동작하는지 확인 부탁드려요.
천하무적님의 댓글
천하무적 이름으로 검색 작성일
안녕하세요
님의 말씀대로 수정을 하였더니 두개의 센서와 알림 매크로 완전 정상 잘 수행 됩니다.
이렇게 좋은 걸 어디 쓸까 고민을 하게 되네요
릴레이를 제어 하는 용도로 쓰기에는 너무 아까운듯 합니다.
다시 한번 감사 드립니다.
좋은것이 맹글어지면 공유 하도록 하겠습니다.
최고관리자님의 댓글


잘 된다니 다행이네요. 작품 만드시면 한번 보여주세요.