recipient = testform.cleaned_data['recipient']
message = testform.cleaned_data['message']
- ok, msg = tw.send_message(recipient, message)
+ ok, code, msg = tw.send_message(recipient, message)
if ok:
messages.info(request, 'Message successfully sent to {0}'.format(recipient))
+ elif code == 150:
+ messages.warning(request, 'Cannot send message to users not being followed')
else:
messages.error(request, 'Failed to send to {0}: {1}'.format(recipient, msg))
return HttpResponseRedirect('.')
)
if reg.twittername:
# Twitter name registered, so send reminder
- ok, err = tw.send_message(reg.twittername, msg)
- if not ok:
+ ok, code, err = tw.send_message(reg.twittername, msg)
+ if not ok and code != 150:
+ # Code 150 means trying to send DM to user not following us, so just
+ # ignore that one. Other errors should be shown.
print("Failed to send twitter DM to {0}: {1}".format(reg.twittername, err))
s.reminder_sent=True
params={'screen_name': tousername})
_cached_twitter_users[tousername] = r.json()['id']
except Exception, e:
- return (False, "Failed to look up user %s: %s" % (tousername, e))
+ return (False, None, "Failed to look up user %s: %s" % (tousername, e))
try:
r = self.tw.post('https://api.twitter.com/1.1/direct_messages/events/new.json', json={
}
})
if r.status_code != 200:
- return (False, r.text)
+ try:
+ # Normally these errors come back as json
+ ej = r.json()['errors'][0]
+ return (False, ej['code'], ej['message'])
+ except:
+ return (False, None, r.text)
except Exception, e:
- return (False, e)
- return (True, None)
+ return (False, None, e)
+ return (True, None, None)
class TwitterSetup(object):