2017-10-17 2 views
0

Ich bin mit Spark (Chat für Unternehmen) einen Bot erstellen, in Python, verwende ich PyGitHub für die Bibliothek. Also wenn ich "Repos" in meinem Zimmer mit dem Bot schreibe, muss er mir die Liste meiner Repos zurücksenden. Es funktioniert gut mit meinem persönlichen Konto, aber nicht mit meinem professionellen Konto. Wenn Sie mir erklären können, warum? mein Code hier:PyGithub, kann keine Repos von Unternehmen erhalten

def gitTest(self, details, message): 
     url = "https://enter-prise.com" 
     token = "abcd" 
     github = Github(token, base_url=url) 
     for repo in github.get_organization("org").get_repos(): 
      self.answer(details.roomId, markdown=repo.name) 


Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1997, in __call__ 
    return self.wsgi_app(environ, start_response) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1985, in wsgi_app 
    response = self.handle_exception(e) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1540, in handle_exception 
    reraise(exc_type, exc_value, tb) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1982, in wsgi_app 
    response = self.full_dispatch_request() 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1614, in full_dispatch_request 
    rv = self.handle_user_exception(e) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1517, in handle_user_exception 
    reraise(exc_type, exc_value, tb) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1612, in full_dispatch_request 
    rv = self.dispatch_request() 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1598, in dispatch_request 
    return self.view_functions[rule.endpoint](**req.view_args) 
    File "/home/mflamant/Documents/bot/CiscoSparkPython/testbotforgithub/main.py", line 44, in Main 
    bot.isRunnable() 
    File "/home/mflamant/Documents/bot/CiscoSparkPython/testbotforgithub/utils/Compute.py", line 47, in isRunnable 
    self.spark(message[0], message[1]) 
    File "/home/mflamant/Documents/bot/CiscoSparkPython/testbotforgithub/testbotforgithub.py", line 33, in spark 
    return self.answer(details.roomId, markdown=self.gitTest(details, message)) 
    File "/home/mflamant/Documents/bot/CiscoSparkPython/testbotforgithub/testbotforgithub.py", line 56, in gitTest 
    for repo in github.get_organization(adt).get_repos(): 
    File "/usr/local/lib/python2.7/dist-packages/PyGithub-1.35-py2.7.egg/github/Organization.py", line 539, in get_repos 
    self.url + "/repos", 
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str' 

Können Sie mir erklären, was mit meinem Code falsch? danke

+0

'self.url' ist offensichtlich' None'. –

+0

Ja, aber ich verstehe nicht, was es bedeutet und wie man es ändert? – Kravennagen

+0

Es bedeutet, dass Sie versuchen, zwei Dinge hinzuzufügen, die Sie nicht sinnvoll zusammen hinzufügen können. Denken Sie zurück an Grundschule Mathematikunterricht. Was würdest du dem Lehrer sagen, wenn er/sie dich gebeten hätte, die Nummer 5 dem Stuhl hinzuzufügen? Sie würden wahrscheinlich sagen, dass die Frage keinen Sinn ergibt, und Sie haben Recht. Python sagt dir, dass "self.url" 'None' ist, es ist nicht da, existiert nicht und dass du darum bittest, dass du 5 zu Chair hinzufügst. Sie müssen es erstellen. Siehe @ wpercys Antwort. –

Antwort

2

Wenn gitTest eine Instanzmethode ist, müssen Sie dem Attribut self.url nicht nur die lokale Variable url zuweisen. So Ihre Methode sollte wahrscheinlich so aussehen:

def gitTest(self, details, message): 
    self.url = "https://enter-prise.com" 
    self.token = "abcd" 
    github = Github(token, base_url=url) 
    for repo in github.get_organization("org").get_repos(): 
     self.answer(details.roomId, markdown=repo.name) 

diesem Grund sollten Sie im Bezug auf self als erstes Argument von jeder Instanz-Methode übergeben.

+0

Es tut mir leid, aber es funktioniert nicht für mich ... Ich entschied mich, mit dem GitHub = Github ("abcd", "https://enterprise.com") direkt zu testen, aber wieder nicht funktioniert Ich kann die Repos von meinem Github-Unternehmen nicht bekommen ... – Kravennagen

Verwandte Themen