bot-buenosdias/bot-buenosdias.py

110 lines
2.5 KiB
Python
Raw Normal View History

2025-11-09 12:20:30 +01:00
#!/usr/bin/env python3
# Oscar Triano García
# This program is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published
# by the Free Software Foundation, either version 3 of the License,
# or (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
import sys
import datetime
import random
import requests
import tomllib
VERSION = "1.0"
mensaje = "BIP BOP"
hoy = datetime.datetime.now()
dia = hoy.isoweekday()
if len(sys.argv) < 2:
print("Ningun argumento para configuración.")
sys.exit(1)
config_toml = sys.argv.pop()
archivo_config = open(config_toml,"rb")
config = tomllib.load(archivo_config)
token = ""
URL = ""
try:
token = config["token"]
except:
print ("'token' no found in config.");
sys.exit(1)
try:
URL = config["URL"]
except:
print ("'URL' no found in config.")
sys.exit(2)
URL_status = URL + "/api/v1/statuses"
dayweek_name = {
1: "Monday",
2: "Tuesday",
3: "Wednesday",
4: "Thursday",
5: "Friday",
6: "Saturday",
7: "Sunday",
}.get(dia,"default")
def send_message(status, token):
data = {
"status": status,
"media_ids[]": [],
"poll[options]": [],
"poll[expires_in]": []
}
headers = {"Authorization": f"Bearer {token}"}
return requests.post(URL_status,headers=headers,data=data)
def build_random_message(config, dayweek_name):
"""
Priority: phrases > subjects + predicates
"""
message = config.get("base", "")
dia_config = None
if dayweek_name in config:
dia_config = config[dayweek_name]
elif "default" in config:
dia_config = config["default"]
if "phrases" in dia_config and len(dia_config["phrases"]) > 0:
phrase = dia_config["phrases"][random.randint(0, len(dia_config["phrases"])-1)]
message += f"{phrase}."
else: # Continue here
subjects = dia_config.get("subjects", [])
predicates = dia_config.get("predicates", [])
subject = ""
predicate = ""
if subjects:
subject = subjects[random.randint(0, len(subjects)-1)]
if predicates:
predicate = predicates[random.randint(0, len(predicates)-1)]
message += f"{subject} {predicate}."
return message
message = build_random_message (config, dayweek_name)
print(message)
res = send_message(message, token)
print(res)