如何解决类型错误:预期的 str、bytes 或 os.PathLike 对象,而不是 int
所以我正在尝试制作一个 Twitter 机器人,它会自动回复、点赞和转发提及某个 #
的推文。在下面的代码中,每当有人在他们的推文中提到机器人和 #amrevx
时,它都会自动回复,比如转推,并存储推文 ID,这样它就不会在循环中继续回复同一个推文.但是当它找到一条推文并达到其目的时,它会停止运行并发送以下错误:
Traceback (most recent call last):
File "main.py",line 47,in <module>
reply()
File "main.py",line 44,in reply
store_last_seen(FILE_NAME,tweet.id)
File "main.py",line 27,in store_last_seen
file_write = open(FILE_NAME,'w')
TypeError: expected str,bytes or os.PathLike object,not int
import tweepy
import os
import time
consumer_key = (os.getenv("c.key"))
consumer_secret = (os.getenv("c.secret"))
key = (os.getenv("key"))
secret = (os.getenv("secret"))
auth = tweepy.OAuthHandler(consumer_key,consumer_secret)
auth.set_access_token(key,secret)
api = tweepy.API(auth)
FILE_NAME = 'last_seen.txt'
def read_last_seen(FILE_NAME):
file_read = open(FILE_NAME,'r')
last_seen = str(file_read.read().strip())
file_read.close()
return last_seen
def store_last_seen(last_seen,FILE_NAME):
file_write = open(FILE_NAME,'w')
file_write.write(str(last_seen))
file_write.close()
return
def reply():
print('retrieving and replying to tweets...',flush=True)
last_seen = read_last_seen(FILE_NAME)
tweets = api.mentions_timeline(read_last_seen(FILE_NAME),tweet_mode = 'extended')
for tweet in reversed(tweets):
if '#amrevx' in tweet.full_text.lower():
print(str(tweet.id) + '-' + tweet.full_text)
last_seen = tweet.id
store_last_seen(last_seen,FILE_NAME)
api.update_status("@" + tweet.user.screen_name + " Auto reply,like,and retweet work :)",tweet.id)
api.create_favorite(tweet.id)
api.retweet(tweet.id)
store_last_seen(FILE_NAME,tweet.id)
while True:
reply()
time.sleep(15)
解决方法
在回复函数的最后一行,您有 store_last_seen(FILE_NAME,tweet.id)
。
您将 FILE_NAME
作为 last_seen
传递,tweet.id
作为 FILE_NAME
传递,而不是相反。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。