我制作了一个自动发送私信的 Twitter 机器人:

I made a Twitter bot that automatically tweets Direct Messages:

我最近开始学习python,我对pyhton的知识是0,最近几周我一直在研究python和推特api。

我决定开发一个简单的 Twitter 机器人,它会自动发布人们通过我的直接消息发送的任何内容,我设法做到了。

这是我的代码:

import tweepy
import json
import sys
import re
import time

print("acessing api...")

consumer_key = 'consumer_key'
consumer_secret = 'consumer_secret'

key = 'key'
secret = 'key_secret'

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(key, secret)
api = tweepy.API(auth, wait_on_rate_limit = True)

print('api accessed')

print('colecting dms')

direct_message = api.list_direct_messages()

text = direct_message[0].message_create["message_data"]["text"]

def send_tweet():
    print('sending tweet...')
    api.update_status('/bot: ' + text)
        
while True:
    send_tweet()
    time.sleep(30)
    

代码有效,但不是 100%,我能够从 Dm 中提取文本并在 api.update_status("/bot: " + text) 上使用它,但是当它循环时我收到以下错误:

tweepy.error.TweepError: [{'code': 187, 'message': 'Status is a duplicate.'}]

我已经查过了,并尝试了很多东西,例如:

while True:
    try:
        send_tweet()
        time.sleep(30)
    
    except tweepy.TweepError as error:
        if error.api_code == 187:
            print('duplicate message')
            
        else:
            print('waiting for new message')
            time.sleep(30)

我想要的只是一种让代码继续运行并忽略已发送的消息和推文的方法,同时等待新的 dm

另一件不断发生的事情是,当我尝试测试文本的提取时,我一直从同一个 dm 获取相同的文本,而不是获取另一个更新的文本。

即使在您阅读或回复后,私信仍会保留在收件箱中。最好在处理完 DM 后将其删除(在您的情况下是发推文),这样您下次获取消息时就不必担心它了。