2016-06-27 2 views
0

나는 praw로 봇을 작성했습니다. 나는 그가 이미 응답 한 코멘트에 로봇이 응답하는 것을 피하기 위해 cache라는 이름의 목록에 덧글 ids를 저장합니다. 이것은 ID를 저장하는 데 사용하는 방법입니다.Bot가 이미 답장 한 댓글에 답글

def saveCache(id): 
    cache.append(id) 

    data = open("cache.txt", "a") 
    data.write(id) 
    data.write('\n') 
    data.close() 

이것은 또한 효과가 있습니다. 보트가리스트에 파일의 모든 ID가로드되어야 다시 시작한 후에

: 캐시 = []

def loadCache(): 
    with open('cache.txt', 'r') as f: 
     cache = f.readlines() 
     print ("cache: ") 
     for line in cache: 
      print(line) 

출력은 정확하다.

하지만 로봇이 이미 답장 한 댓글에 답장합니다.

내 '테스트'가 올바르지 않습니까?

+0

테스트에 대한 자세한 내용을 공유 할 수 있습니까? – Oni1

+1

어떤 유형이'id'입니까? 왜냐하면 파일에서 그것을 읽을 때 모든 항목은'int' (또는 심지어 bytes 대 vs string) 대신에 문자열이됩니다. – Gert

+0

id는 문자열입니다. d4p2rv0 – unrealwombat

답변

1

cache.txt에서 다시 읽으면 목록의 항목에도 '\ 그래서 당신의 경기는 실패합니다.

줄 바꿈이없는 읽기 전용 문자로 시도하십시오.

+0

또는'cache = [line for f] '와 같이 보입니다. 나는 이것이 더 빠를 것이라고 생각한다. :) – erip

+0

@erip 나는 그것을 알지 못했다. btw, cache = [line inr]에 대한 line.rstrip ('\ n')을 의미합니까? –

+0

당신은 맞습니다. 그러나 코드를 수정 한 후에도 그는 그 사람이 이미 코멘트에 대답했다는 사실을 무시합니다. – unrealwombat

관련 문제