TwitterBot kleine Frage beim 1. Projekt

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
xconsole
User
Beiträge: 4
Registriert: Donnerstag 7. Dezember 2017, 08:43

Hallo zusamen,
ich bin neu in Python und benötige etwas hilfe bei einem Problem.

Mein TweetBot sendet eine Zeile per PRINT ab und alles funktioniert.
Aber wenn ich die Zeile tweeten möchte und die "#" lösche bekomme ich ein Fehlermeldung :(
:::::::::: Hier das script

Code: Alles auswählen

import time
import emoji
import random
from twython import Twython
from credentials import *
weekday = (time.strftime("%A"))
clock = (time.strftime("%H:%M:%S"))
x = random.randint(0,374)
y = random.randint(0,374)
print ("Hello "+weekday+" its "+clock+"\nx=", x ,"y=", y ,"\nLobet @systemrelewand!!!"+"\n"+(emoji.emojize(':robot_face:')))
#tweet = "Hello "+weekday+" its "+clock+"\nx=", x ,"y=", y ,"\nLobet @systemrelewand!!!"+"\n"+(emoji.emojize(':robot_face:'))
#api = Twython(apiKey,apiSecret,accessToken,accessTokenSecret)
#api.update_status(status=tweet)
#EoF
Fehlermeldung anbei:
Traceback (most recent call last):
File "testing.py", line 18, in <module> api.update_status(status=tweet)
File "C:\Users\Matthias.Kukorudz\AppData\Local\Programs\Python\Python36-32\lib\site-packages\twython\endpoints.py", line 114, in update_status
return self.post('statuses/update', params=params)
File "C:\Users\Matthias.Kukorudz\AppData\Local\Programs\Python\Python36-32\lib\site-packages\twython\api.py", line 268, in post
return self.request(endpoint, 'POST', params=params, version=version)
File "C:\Users\Matthias.Kukorudz\AppData\Local\Programs\Python\Python36-32\lib\site-packages\twython\api.py", line 258, in request
api_call=url)
File "C:\Users\Matthias.Kukorudz\AppData\Local\Programs\Python\Python36-32\lib\site-packages\twython\api.py", line 194, in _request
retry_after=response.headers.get('X-Rate-Limit-Reset'))
twython.exceptions.TwythonError: Twitter API returned a 403 (Forbidden), Missing required parameter: status.


Ich glaube es liegt an x und y die nicht "verstanden" werden.
habt ihr eine idee wie ich das kombinieren kann?

Danke und Gruß
Matthias
xconsole
User
Beiträge: 4
Registriert: Donnerstag 7. Dezember 2017, 08:43

Oder etwas kürzer beschrieben ->
ich kann zwar das

Code: Alles auswählen

print ("x=", x ,"y=", y )
aber leider geht das nicht als tweet :(

Warum?
Bolitho
User
Beiträge: 219
Registriert: Donnerstag 21. Juli 2011, 07:01
Wohnort: Stade / Hamburg
Kontaktdaten:

Probiere es mal mit print(tweet) und schau dir an, was du der Variable zugewiesen hast.

Mit dem funktionierenden Print-Aufruf hast du mehrere Parameter an die Funktion übergeben.
xconsole
User
Beiträge: 4
Registriert: Donnerstag 7. Dezember 2017, 08:43

Sorry - ich habs gelöst - und x als STR ausgegeben - danke trotzdem!


p.s. gutes forum, ich werde euch wohl noch öfter nerven :(
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

@xconsole: `print` kann mehrere Variablen ausgeben. Du brauchst aber einen String als eine Variable.

Wenn man einer Variable etwas mit Kommas zuweist:

Code: Alles auswählen

tweet = "Hello "+weekday+" its "+clock+"\nx=", x ,"y=", y ,"\nLobet @systemrelewand!!!"+"\n"+(emoji.emojize(':robot_face:'))
bekommst Du ein sogenanntes Tuple (`print(type(tweet))` -> tuple)
Statt mit `,` oder `+` solltest Du den String mit Stringformatierung erzeugen:

Code: Alles auswählen

tweet = (
    "Hello {} its {}\n"
    "x={}, y={}\n"
    "Lobet @systemrelewand!!!\n"
    "{}").format(weekday, clock, x, y, emoji.emojize(':robot_face:'))
Antworten