check if account is bot #9
This commit is contained in:
parent
ea6f6e9fa3
commit
3d28bcc9de
141
bot.py
141
bot.py
|
@ -48,60 +48,28 @@ class BotListener(StreamListener):
|
|||
# catch only mention in notification
|
||||
if notification['type'] == 'mention':
|
||||
log.debug("Got a mention")
|
||||
sender = notification['account']['acct'] # Get sender name
|
||||
sender_hour_filename = "limiter/hour/" + sender; # Forge file for limiter
|
||||
sender_minute_filename = "limiter/minute/" + sender; # Forge file for limiter
|
||||
|
||||
if os.path.isfile(sender_hour_filename): # Check if file exist
|
||||
log.debug("Sender file exist")
|
||||
statbuf = os.stat(sender_hour_filename)
|
||||
last_edit = int(statbuf.st_mtime)
|
||||
ts = int(time.time())
|
||||
if ts - last_edit > 3599: # check if file is modified 1 hour after last edition
|
||||
log.debug("file is too old")
|
||||
f = open(sender_hour_filename,'w')
|
||||
f.write(str(1)) # reset counter
|
||||
f.close()
|
||||
can_continue = True
|
||||
else:
|
||||
log.debug("file is young")
|
||||
f = open(sender_hour_filename,'r+')
|
||||
limit = int(get_parameter("limit_hour", config_file))
|
||||
number_of_mention = int(f.read())
|
||||
if number_of_mention < limit: # limit of mention per hour is limit_hour
|
||||
log.debug("Sender have less of limit requests")
|
||||
f.seek(0)
|
||||
f.write(str(number_of_mention + 1))
|
||||
can_continue = True
|
||||
else:
|
||||
log.debug("Sender have more of limit requests")
|
||||
can_continue = False # if number of mention is for, user can't receive anything
|
||||
f.close()
|
||||
else: # File not exist, create it and initialise it
|
||||
log.debug("Sender file not exist")
|
||||
f = open(sender_hour_filename,"w+")
|
||||
f.write(str(1))
|
||||
f.close()
|
||||
can_continue = True
|
||||
|
||||
if can_continue:
|
||||
if os.path.isfile(sender_minute_filename): # Check if file exist
|
||||
if notification["account"]["bot"] == False:
|
||||
sender = notification['account']['acct'] # Get sender name
|
||||
sender_hour_filename = "limiter/hour/" + sender; # Forge file for limiter
|
||||
sender_minute_filename = "limiter/minute/" + sender; # Forge file for limiter
|
||||
|
||||
if os.path.isfile(sender_hour_filename): # Check if file exist
|
||||
log.debug("Sender file exist")
|
||||
statbuf = os.stat(sender_minute_filename)
|
||||
statbuf = os.stat(sender_hour_filename)
|
||||
last_edit = int(statbuf.st_mtime)
|
||||
ts = int(time.time())
|
||||
if ts - last_edit > 59: # check if file is modified 1 minute after last edition
|
||||
if ts - last_edit > 3599: # check if file is modified 1 hour after last edition
|
||||
log.debug("file is too old")
|
||||
f = open(sender_minute_filename,'w')
|
||||
f = open(sender_hour_filename,'w')
|
||||
f.write(str(1)) # reset counter
|
||||
f.close()
|
||||
can_continue = True
|
||||
else:
|
||||
log.debug("file is young")
|
||||
f = open(sender_minute_filename,'r+')
|
||||
limit = int(get_parameter("limit", config_file))
|
||||
f = open(sender_hour_filename,'r+')
|
||||
limit = int(get_parameter("limit_hour", config_file))
|
||||
number_of_mention = int(f.read())
|
||||
if number_of_mention < limit: # limit of mention per minute is 4
|
||||
if number_of_mention < limit: # limit of mention per hour is limit_hour
|
||||
log.debug("Sender have less of limit requests")
|
||||
f.seek(0)
|
||||
f.write(str(number_of_mention + 1))
|
||||
|
@ -109,39 +77,72 @@ class BotListener(StreamListener):
|
|||
else:
|
||||
log.debug("Sender have more of limit requests")
|
||||
can_continue = False # if number of mention is for, user can't receive anything
|
||||
file = open(sender_hour_filename,'r+')
|
||||
number_of_mention = int(file.read())
|
||||
file.seek(0)
|
||||
file.write(str(number_of_mention - 1))
|
||||
file.close()
|
||||
f.close()
|
||||
else: # File not exist, create it and initialise it
|
||||
log.debug("Sender file not exist")
|
||||
f = open(sender_minute_filename,"w+")
|
||||
f = open(sender_hour_filename,"w+")
|
||||
f.write(str(1))
|
||||
f.close()
|
||||
can_continue = True
|
||||
|
||||
if can_continue:
|
||||
if os.path.isfile(sender_minute_filename): # Check if file exist
|
||||
log.debug("Sender file exist")
|
||||
statbuf = os.stat(sender_minute_filename)
|
||||
last_edit = int(statbuf.st_mtime)
|
||||
ts = int(time.time())
|
||||
if ts - last_edit > 59: # check if file is modified 1 minute after last edition
|
||||
log.debug("file is too old")
|
||||
f = open(sender_minute_filename,'w')
|
||||
f.write(str(1)) # reset counter
|
||||
f.close()
|
||||
can_continue = True
|
||||
else:
|
||||
log.debug("file is young")
|
||||
f = open(sender_minute_filename,'r+')
|
||||
limit = int(get_parameter("limit", config_file))
|
||||
number_of_mention = int(f.read())
|
||||
if number_of_mention < limit: # limit of mention per minute is 4
|
||||
log.debug("Sender have less of limit requests")
|
||||
f.seek(0)
|
||||
f.write(str(number_of_mention + 1))
|
||||
can_continue = True
|
||||
else:
|
||||
log.debug("Sender have more of limit requests")
|
||||
can_continue = False # if number of mention is for, user can't receive anything
|
||||
file = open(sender_hour_filename,'r+')
|
||||
number_of_mention = int(file.read())
|
||||
file.seek(0)
|
||||
file.write(str(number_of_mention - 1))
|
||||
file.close()
|
||||
f.close()
|
||||
else: # File not exist, create it and initialise it
|
||||
log.debug("Sender file not exist")
|
||||
f = open(sender_minute_filename,"w+")
|
||||
f.write(str(1))
|
||||
f.close()
|
||||
can_continue = True
|
||||
|
||||
if can_continue:
|
||||
id = notification['status']['id']
|
||||
visibility = notification['status']['visibility']
|
||||
if visibility == 'public':
|
||||
visibility = 'unlisted'
|
||||
mentions = notification['status']['mentions']
|
||||
text = "@" + notification['status']["account"]["acct"] + " "
|
||||
for mention in mentions:
|
||||
if mention["acct"] != get_parameter("name_bot", config_file):
|
||||
text = text + "@" + mention["acct"] + " "
|
||||
|
||||
if get_parameter("sensitive", config_file) == "yes":
|
||||
sensitive = True
|
||||
else:
|
||||
sensitive = False
|
||||
media_dict = post_img(mastodon, get_parameter("default_text", config_file), log, config_file)
|
||||
mastodon.status_post(text, None, media_ids=[media_dict], sensitive=sensitive, visibility=visibility, spoiler_text=get_parameter("spoiler_text", config_file))
|
||||
else:
|
||||
log.debug("no picture send :(")
|
||||
pass
|
||||
if can_continue:
|
||||
id = notification['status']['id']
|
||||
visibility = notification['status']['visibility']
|
||||
if visibility == 'public':
|
||||
visibility = 'unlisted'
|
||||
mentions = notification['status']['mentions']
|
||||
text = "@" + notification['status']["account"]["acct"] + " "
|
||||
for mention in mentions:
|
||||
if mention["acct"] != get_parameter("name_bot", config_file):
|
||||
text = text + "@" + mention["acct"] + " "
|
||||
|
||||
if get_parameter("sensitive", config_file) == "yes":
|
||||
sensitive = True
|
||||
else:
|
||||
sensitive = False
|
||||
media_dict = post_img(mastodon, get_parameter("default_text", config_file), log, config_file)
|
||||
mastodon.status_post(text, None, media_ids=[media_dict], sensitive=sensitive, visibility=visibility, spoiler_text=get_parameter("spoiler_text", config_file))
|
||||
else:
|
||||
log.debug("no picture send :(")
|
||||
pass
|
||||
else:
|
||||
log.debug("Nevermind")
|
||||
|
||||
|
|
Reference in a new issue