?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

텔레그램 cli 에 대하여 궁금한점 이 있습니다.

페이지 정보

작성자 천하무적 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일16-01-02 23:15 조회1,785회 댓글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 조건문 위로 올려주세요.
그리고 제대로 동작하는지 확인 부탁드려요.

천하무적님의 댓글

천하무적 이름으로 검색 작성일

안녕하세요
님의 말씀대로 수정을 하였더니 두개의 센서와 알림 매크로 완전 정상 잘 수행 됩니다.
이렇게 좋은 걸 어디 쓸까 고민을 하게 되네요
릴레이를 제어 하는 용도로 쓰기에는 너무 아까운듯 합니다.
다시 한번 감사 드립니다.
좋은것이 맹글어지면 공유 하도록 하겠습니다.