рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдЖрд╕рд╛рди рд▓рд┐рдирдХреНрд╕ рдкреНрд░рдмрдВрдзрди

рд╢реБрдн рджрд┐рди, рдкреНрд░рд┐рдп Habrausersред

рдпрд╣ рдкреЛрд╕реНрдЯ рдЯреНрд╡рд┐рдЯрд░ рдмреЙрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рдЙрд╕рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдбрд╛рдВрд╕рд┐рдВрдЧ рд╕реАрдЯреА рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдереАред рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП Twitter api рдХреЗ рдЕрдкрдиреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВред рдмрд┐рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рд╢реАрд░реНрд╖рдХ рдХрд╣рддрд╛ рд╣реИ, рдмреЙрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмреЛрд░реНрдб рдкрд░ рд▓рд┐рдирдХреНрд╕ рдорд╢реАрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдЯреНрд╡реАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред

рдПрдХ рд╡рд┐рдХрд╛рд╕ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдЕрдЬрдЧрд░ рдХреЛ рдЪреБрдирд╛ рдЧрдпрд╛ рдФрд░, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, tweepy рд▓рд╛рдЗрдмреНрд░реЗрд░реАред рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реЗрдЯрдЕрдк рдХреЗ рд▓рд┐рдП Hout рдКрдкрд░ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╡рд┐рдиреНрдпрд╛рд╕

рд╣рдо рд╕реАрдзреЗ рд╡рд┐рд╖рдп рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдХреЛрдб рдПрдХ рдкреВрд░реНрдг рд▓рд┐рдирдХреНрд╕ рд▓рд┐рдирдХреНрд╕ рдбреЗрдорди рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╣реИ рдФрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
# Twitter credentials
CONSUMER_KEY = ''
CONSUMER_SECRET = ''
ACCESS_KEY = ''
ACCESS_SECRET = ''

# base path
BASE_PATH = os.path.dirname(__file__)

# pid path
PID_PATH = BASE_PATH+'/elmot.pid'

# people nicknames who can manage system
AUTHORIZED_ACCOUNTS = []

# logfile
LOG_PATH = BASE_PATH+'/log/elmot.log'
ERROR_LOG_PATH = BASE_PATH+'/log/elmot.err'

# type None to disable incoming message log
INCOMING_MESSAGE_LOG = BASE_PATH+'/log/incoming.log'

# run elmot as user (do not use root)
RUN_UID = pwd.getpwnam("root").pw_uid


рд╕рдм рдХреБрдЫ рдкрд╛рд░рджрд░реНрд╢реА рд╣реИред рдХрд╛рдо рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдЙрдкрднреЛрдХреНрддрд╛ Consumer_key, Consumer_secret, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреБрдВрдЬрд┐рдпрд╛рдБ - access_key рдФрд░ access_secret рдХреЛ рднрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред AUTHORIZED_ACCOUNTS рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдкреНрд▓рдЧ-рдЗрди

рдЪрд▓реЛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗрд╡рд▓ рдЙрдирдХреА рдорджрдж рд╕реЗ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИрдВред рдкреНрд▓рдЧрдЗрди рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
class Plugin(object):
name = 'undefined'
keyword = 'undefined'
# actions:
# 0 - silent
# 1 - private message
# 2 - tweet to timeline
action = 2
controlled = True
def __init__(self):
print '*', self.name, 'loaded'
def execute(self, message):
pass

# run method only for non controlled plugins
# for threading support with python Threads
def run():
pass

рдЬрд╣рд╛рдВ рдирд╛рдо рдкреНрд▓рдЧрдЗрди рдХрд╛ рдирд╛рдо рд╣реИ, рдХреАрд╡рд░реНрдб рдЗрд╕рдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХрд╛рд░реНрд░рд╡рд╛рдИ - рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ, рдЕрд░реНрдерд╛рдд, рдкреНрд▓рдЧрдЗрди рдЪреБрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдкреАрдПрдо рдореЗрдВ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЖрдкрдХреЗ рд╕рдордп рдкрд░ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИред
рдирд┐рдпрдВрддреНрд░рд┐рдд рдХреНрд╖реЗрддреНрд░ рдкреНрд▓рдЧрдЗрди рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЧреНрд░рд╛рд╣рдХ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░реЗрдХреНрдЯрд┐рд╡ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдкреНрд▓рдЧрдЗрди рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдИрдореЗрд▓ рдореЗрдВ рдмреЙрдЯ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕реБрдирддрд╛ рд╣реИ рдФрд░, рдпрджрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рд╖реНрдкрд╛рджрди рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдХреБрдЫ рднреА рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдкреНрд▓рдЧрдЗрди "рдЪреБрдк" рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рд░рди () рд╡рд┐рдзрд┐ рд╕реЗ рдХреЛрдб рдЪрд▓рд╛рддрд╛ рд╣реИред

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ

рд╣рдо рдХреЗрд╡рд▓ рдмреЙрдЯ рдХреЛ "рдХреАрд╡рд░реНрдб рдХрдорд╛рдВрдб рдЖрд░реНрдЧреНрд╕" рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рдирд┐рдЬреА рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╣реИрдВред рдмреЙрдЯ рд╕рдВрджреЗрд╢ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдкреНрд▓рдЧрдЗрди рдХреЛ рднреЗрдЬ рджреЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдкрдЯрд╛рдЗрдо рдкреНрд▓рдЧрдЗрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ - рдХреАрд╡рд░реНрдб рдФрд░ рдЗрд╕рдХреА рд╕рдордпрд░реЗрдЦрд╛ рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдорд╢реАрди рдЬрд┐рд╕ рдкрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд▓рд╛рдЧреВ рдкреНрд▓рдЧрдЗрдиреНрд╕

contest - рджреВрд░рд╕реНрде рд╣реЛрд╕реНрдЯ (рдУрдВ) рдХреЗ рд╕рд╛рде рд▓рд┐рдВрдХ рдХреА рдирд┐рд░рдВрддрд░ рдЬрд╛рдВрдЪред рд╡рд╣ рд╕рдордпрд╛рд╡рдзрд┐ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
removetweets - bot рдХреЗ рдЯрд╛рдЗрдорд▓рд╛рдЗрди рд╕реЗ n tweets рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг "removetweets 5")ред
sshmonitor - ssh рд╕рд░реНрд╡рд░ рдореЙрдиреАрдЯрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдирдЬрд░ рд░рдЦрддрд╛ рд╣реИред рдкреНрд░рдорд╛рдгреАрдХрд░рдг рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдордпрд░реЗрдЦрд╛ рд▓рд┐рдЦрддреА рд╣реИред
uptime - рдорд╢реАрди рдХреЗ рдЕрдкрдЯрд╛рдЗрдо рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╕рдм рд╣реИ, рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдкреНрд▓рдЧрдЗрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЯреНрд╡рд┐рдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреБрдЫ рднреА (рдпрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ) рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИред
рдкреАрдПрд╕ рдХреЛрдб рдЬреАрдердм рдкрд░ред
рдкреАрдкреАрдПрд╕ рдбреЗрдореЙрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд┐рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

Source: https://habr.com/ru/post/In127788/


All Articles