Improve mention handling. Less code = better. Part 2.
This commit is contained in:
parent
1736012d66
commit
b39aef819e
1 changed files with 31 additions and 29 deletions
|
@ -51,7 +51,7 @@ def callback(bot, update):
|
||||||
return
|
return
|
||||||
|
|
||||||
if status:
|
if status:
|
||||||
tweetMessage(status, None, bot, callback = update.callback_query)
|
tweetMessage(status, update.callback_query.message.chat_id, bot, callback = update.callback_query)
|
||||||
|
|
||||||
def captionHelper(bot, update):
|
def captionHelper(bot, update):
|
||||||
if update.message.caption.startswith("@%s /"):
|
if update.message.caption.startswith("@%s /"):
|
||||||
|
@ -321,30 +321,33 @@ def explicitTweet(bot, update, args, reply = None):
|
||||||
except tweepy.error.TweepError as e:
|
except tweepy.error.TweepError as e:
|
||||||
bottools.methods.twoExceptions(e, update.message)
|
bottools.methods.twoExceptions(e, update.message)
|
||||||
|
|
||||||
|
def getMentions(tweet, two, args = []):
|
||||||
|
sender = tweet.user.screen_name
|
||||||
|
try:
|
||||||
|
text = tweet.full_text
|
||||||
|
except:
|
||||||
|
text = tweet.text
|
||||||
|
|
||||||
|
mentions = []
|
||||||
|
|
||||||
|
for m in re.split('[^\w@]+', text):
|
||||||
|
try:
|
||||||
|
if m[0] == "@" and m[0].strip() != "" and not (m in args or m.strip() == "" or m == "@%s" % two.whoami().strip("@") or m == "@%s" % sender.strip("@")):
|
||||||
|
mentions += [m]
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
if not sender.strip("@") == two.whoami().strip("@"):
|
||||||
|
mentions = ["@%s" % sender.strip("@")] + mentions
|
||||||
|
|
||||||
|
return mentions
|
||||||
|
|
||||||
def reply(bot, update, args):
|
def reply(bot, update, args):
|
||||||
try:
|
try:
|
||||||
reply = bottools.methods.getTweetID(args[0], update.message.chat_id)
|
reply = bottools.methods.getTweetID(args[0], update.message.chat_id)
|
||||||
two = bottools.methods.getTwo(update.message)
|
two = bottools.methods.getTwo(update.message)
|
||||||
otweet = two.getTweet(reply)
|
otweet = two.getTweet(reply)
|
||||||
sender = otweet.user.screen_name
|
mentions = getMentions(otweet, two, args)
|
||||||
|
|
||||||
if not ("@%s" % sender.strip("@")) in [("@%s" % a.strip("@")) for a in args]:
|
|
||||||
mentions = []
|
|
||||||
|
|
||||||
for m in re.split('[^\w@]+', otweet.full_text):
|
|
||||||
try:
|
|
||||||
if m[0] == "@" and m[0].strip() != "":
|
|
||||||
mentions += [m]
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
for m in mentions:
|
|
||||||
if m in args or m.strip() == "" or m =="@%s" % two.whoami().strip("@") or m == "@%s" % sender.strip("@"):
|
|
||||||
mentions.remove(m)
|
|
||||||
|
|
||||||
else:
|
|
||||||
mentions = []
|
|
||||||
|
|
||||||
pargs = mentions + args[1:]
|
pargs = mentions + args[1:]
|
||||||
|
|
||||||
except:
|
except:
|
||||||
|
@ -463,11 +466,10 @@ def tweetMessage(status, cid, bot, force = False, callback = None, notified = No
|
||||||
except:
|
except:
|
||||||
text = status.full_text
|
text = status.full_text
|
||||||
|
|
||||||
if not (force or callback):
|
|
||||||
try:
|
try:
|
||||||
two = twitools.twoBotHelper(cid)
|
two = twitools.twoBotHelper(cid)
|
||||||
except tweepy.error.TweepError as e:
|
except tweepy.error.TweepError as e:
|
||||||
logging.exception("I really don't see how this could possibly happen.")
|
logging.exception(e)
|
||||||
|
|
||||||
if not callback:
|
if not callback:
|
||||||
if status.user.screen_name.strip("@") == two.whoami().strip("@") and not db.getCStatus(cid):
|
if status.user.screen_name.strip("@") == two.whoami().strip("@") and not db.getCStatus(cid):
|
||||||
|
@ -507,7 +509,7 @@ def tweetMessage(status, cid, bot, force = False, callback = None, notified = No
|
||||||
buttons += [telegram.InlineKeyboardButton("Retweet", callback_data = "/retweet %i" % i)]
|
buttons += [telegram.InlineKeyboardButton("Retweet", callback_data = "/retweet %i" % i)]
|
||||||
|
|
||||||
buttons += [
|
buttons += [
|
||||||
telegram.InlineKeyboardButton("Reply", switch_inline_query_current_chat = "/reply %i " % i),
|
telegram.InlineKeyboardButton("Reply", switch_inline_query_current_chat = "/reply %i %s" % (i, ' '.join(getMentions(status, two)))),
|
||||||
telegram.InlineKeyboardButton("Quote", switch_inline_query_current_chat = "/quote %i " % i)
|
telegram.InlineKeyboardButton("Quote", switch_inline_query_current_chat = "/quote %i " % i)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue