Added decent logging

This commit is contained in:
retoor 2024-11-27 11:28:05 +01:00
parent 8b4d553772
commit dba78e616c
4 changed files with 28 additions and 19 deletions

View File

@ -0,0 +1,12 @@
import logging
import sys
logging.basicConfig(
level=logging.INFO, # Adjust as needed
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
handlers=[
logging.StreamHandler(sys.stdout), # Log to stdout
]
)
log = logging.getLogger(__name__)

View File

@ -1,7 +1,7 @@
import requests, json import requests, json
from ragnar.cache import method_cache from ragnar.cache import method_cache
from ragnar import log
class Api: class Api:

View File

@ -3,7 +3,7 @@ import time
import random import random
from ragnar.cache import method_cache from ragnar.cache import method_cache
import re import re
from ragnar import log
class Bot: class Bot:
@ -24,16 +24,14 @@ class Bot:
self.name self.name
) )
self.auth = None self.auth = None
self.triggers = [ self.triggers = [
"$", "$",
"crypto", "crypto",
"hacker", "hacker",
"recovery", "recovery",
{"regex": "\([+,(,0-9,),-]{7,}"}, {"regex": r"\([+,(,0-9,),-]{7,}"},
"money", "money",
] ]
self.api = Api(username=self.username, password=self.password) self.api = Api(username=self.username, password=self.password)
def rsleepii(self): def rsleepii(self):
@ -44,9 +42,9 @@ class Bot:
self.rsleepii() self.rsleepii()
self.auth = self.api.login() self.auth = self.api.login()
if not self.auth: if not self.auth:
print("Authentication for {} failed.".format(self.username)) log.error("Authentication for {} failed.".format(self.username))
raise Exception("Login error") raise Exception("Login error")
print("Authentication succesful for {}.".format(self.username)) log.info("Authentication succesful for {}.".format(self.username))
def clean_rant_text(self, rant_text): def clean_rant_text(self, rant_text):
return rant_text.replace(" ", "").lower() return rant_text.replace(" ", "").lower()
@ -59,10 +57,10 @@ class Bot:
if trigger.get("regex"): if trigger.get("regex"):
regex = trigger["regex"] regex = trigger["regex"]
if re.search(regex, clean_text): if re.search(regex, clean_text):
print("Regex trigger {} matched!".format(regex)) log.info("Regex trigger {} matched!".format(regex))
return True return True
elif trigger in clean_text: elif trigger in clean_text:
print("Trigger {} matched!".format(trigger)) log.info("Trigger {} matched!".format(trigger))
return True return True
return False return False
@ -82,7 +80,7 @@ class Bot:
profile = self.api.get_profile(user_id) profile = self.api.get_profile(user_id)
score = profile["score"] score = profile["score"]
if score < 5: if score < 5:
print("User {} is sus with his score of only {}.".format(username, score)) log.warning("User {} is sus with his score of only {}.".format(username, score))
return True return True
else: else:
return False return False
@ -96,18 +94,18 @@ class Bot:
rants = self.api.get_rants("recent", 5, 0) rants = self.api.get_rants("recent", 5, 0)
for rant in rants: for rant in rants:
if not self.is_user_sus(rant["user_username"]): if not self.is_user_sus(rant["user_username"]):
print("User {} is trusted.".format(rant["user_username"])) log.info("User {} is trusted.".format(rant["user_username"]))
continue continue
if not self.is_sus_rant(rant["id"], rant["text"]): if not self.is_sus_rant(rant["id"], rant["text"]):
print("Rant by {} is not sus.".format(rant["user_username"])) log.info("Rant by {} is not sus.".format(rant["user_username"]))
continue continue
if self.is_flagged_as_sus(rant["id"], rant.get("num_comments")): if self.is_flagged_as_sus(rant["id"], rant.get("num_comments")):
continue continue
print("Rant is not {} flagged as sus yet.".format(rant["user_username"])) log.warning("Rant is not {} flagged as sus yet.".format(rant["user_username"]))
print("Flagging rant by {} as sus.".format(rant["user_username"])) log.warning("Flagging rant by {} as sus.".format(rant["user_username"]))
self.mark_as_sus(rant) self.mark_as_sus(rant)
self.down_vote_rant(rant) self.down_vote_rant(rant)
def down_vote_rant(self, rant): def down_vote_rant(self, rant):
print("Downvoting rant by {}.".format(rant["user_username"])) log.warning("Downvoting rant by {}.".format(rant["user_username"]))
print(self.api.post_rant_vote(rant["id"], 4)) log.debug(self.api.post_rant_vote(rant["id"], 4))

View File

@ -3,7 +3,7 @@ from ragnar.bot import Bot
import random import random
import time import time
from concurrent.futures import ThreadPoolExecutor as Executor from concurrent.futures import ThreadPoolExecutor as Executor
from ragnar import log
def parse_args(): def parse_args():
parser = argparse.ArgumentParser(description="Process username and password.") parser = argparse.ArgumentParser(description="Process username and password.")
@ -15,6 +15,7 @@ def parse_args():
def bot_task(username, password): def bot_task(username, password):
log.info("Created new but task. Username: {}".format(username))
time.sleep(random.randint(1, 20)) time.sleep(random.randint(1, 20))
bot = Bot(username=username, password=password) bot = Bot(username=username, password=password)
bot.login() bot.login()
@ -32,8 +33,6 @@ def main():
for x in range(1, 5): for x in range(1, 5):
username = "no-spam{}@molodetz.nl".format(str(x)) username = "no-spam{}@molodetz.nl".format(str(x))
password = args.password password = args.password
time.sleep(1)
print("Starting bot {}.".format(username))
executor.submit(bot_task, username, password) executor.submit(bot_task, username, password)
executor.shutdown(wait=True) executor.shutdown(wait=True)