Praw 属性错误:无法设置属性
我写了一个reddit机器人,它会在某个子版块的评论中搜索,如果发现有评论提到“感觉”(feels),它就会回复这个评论。然后,它会把这个评论的ID写进一个文本文件里,这样就不会对同一个评论重复回复。
这是代码:
import praw
import time
import sys
import random
r = praw.Reddit('Posts Feels gif in response to someone saying feels'
'by: Mjone77')
r.login('Feels_Bot', 'nottherealpassword')
file = open('Commentids.txt', 'r')
already_done = file.read()
file.close()
times = 0
feels = 0
while True:
# try:
subreddit = r.get_subreddit('frozen')
subreddit_comments = subreddit.get_comments()
times+=1
for comment in subreddit_comments:
commentSays = comment.body
commentSays = commentSays.lower()
#print(commentSays)
#print('\n')
#if 'stop feels_bot' in commentSays:
#sys.exit("Commanded to stop.")
if comment.id not in already_done and 'feels' in commentSays:
gif = random.randrange(0,3)
if gif == 0:
comment.reply('[Relevant](http://i.imgur.com/pXBrf.gif)\n\n___\n\n^I ^am ^a ^bot ^not ^a ^real ^redditor \n\n ^Please ^contact ^/u/Mjone77 ^with ^any ^problems')
if gif == 1:
comment.reply('[Relevant](http://gfycat.com/BraveSerpentineAzurevase)\n\n___\n\n^I ^am ^a ^bot ^not ^a ^real ^redditor \n\n ^Please ^contact ^/u/Mjone77 ^with ^any ^problems')
if gif == 2:
comment.reply('[Relevant](http://www.gfycat.com/PlushMeanCowrie)\n\n___\n\n^I ^am ^a ^bot ^not ^a ^real ^redditor \n\n ^Please ^contact ^/u/Mjone77 ^with ^any ^problems')
already_done = already_done+' '+comment.id
file = open('Commentids.txt', 'w')
file.write(already_done)
file.close()
#print('Commented~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
time.sleep(5)
feels+=1
print('\n\n\n\n\n\n\n')
print('Feels:')
print(feels)
print('Times Ran:')
print(times)
time.sleep(60)
#except AttriuteError:
#pass
我让它运行了一段时间,结果回来时发现出现了一个HTTP错误504:网关超时。有没有人知道怎么避免这个问题,或者让它等60秒再试一次?
还有,当我再次运行它时,没改任何代码,它却给我出现了这个错误:
Traceback (most recent call last):
File "C:\Users\Me\Desktop\My Programs\Feels Bot\Feels Bot\FeelsBot.py", line 20, in <module>
for comment in subreddit_comments:
File "C:\Python34\lib\site-packages\praw\__init__.py", line 471, in get_content
page_data = self.request_json(url, params=params)
File "C:\Python34\lib\site-packages\praw\decorators.py", line 161, in wrapped
return_value = function(reddit_session, *args, **kwargs)
File "C:\Python34\lib\site-packages\praw\__init__.py", line 516, in request_json
data = json.loads(response, object_hook=hook)
File "C:\Python34\lib\json\__init__.py", line 331, in loads
return cls(**kw).decode(s)
File "C:\Python34\lib\json\decoder.py", line 343, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Python34\lib\json\decoder.py", line 359, in raw_decode
obj, end = self.scan_once(s, idx)
File "C:\Python34\lib\site-packages\praw\__init__.py", line 403, in _json_reddit_objecter
return object_class.from_api_response(self, json_data['data'])
File "C:\Python34\lib\site-packages\praw\objects.py", line 58, in from_api_response
return cls(reddit_session, json_dict=json_dict)
File "C:\Python34\lib\site-packages\praw\objects.py", line 514, in __init__
underscore_names=['replies'])
File "C:\Python34\lib\site-packages\praw\objects.py", line 72, in __init__
self.has_fetched = self._populate(json_dict, fetch)
File "C:\Python34\lib\site-packages\praw\objects.py", line 141, in _populate
setattr(self, name, value)
File "C:\Python34\lib\site-packages\praw\objects.py", line 102, in __setattr__
object.__setattr__(self, name, value)
AttributeError: can't set attribute
sys:1: ResourceWarning: unclosed <socket object at 0x0342D930>
C:\Python34\lib\importlib\_bootstrap.py:2150: ImportWarning: sys.meta_path is empty
现在完全不运行了,有人知道怎么解决这个错误吗?
1 个回答
3
我觉得这个错误是因为最近reddit更新造成的,具体可以看这个链接。
在上面的链接中提到:
这个变化可能会对一些第三方的扩展程序、应用等造成意想不到的影响,特别是那些显示或使用具体的点赞和点踩数字的工具。我们已经尽量采取了一些措施来让这个过渡更顺利,但如果你发现有什么问题,请告诉我们。
今天我自己的机器人也开始出现这个问题了,而且代码没有任何改动。
补充:这个AttributeError错误已经修复了。记得把PRAW更新到最新版本,这样就可以正常使用了。