def getupdates() -> dict(): """Ricevi gli ultimi aggiornamenti dal server di Telegram e restituisci l'ultimo messaggio non letto.""" while True: parametri = { 'offset': filemanager.readfile("lastid.txt"), # Update ID del messaggio da leggere 'limit': 1, # Numero di messaggi da ricevere alla volta, lasciare 1 'timeout': 1500, # Secondi da mantenere attiva la richiesta se non c'e' nessun messaggio } data = requests.get("https://api.telegram.org/bot" + telegramtoken + "/getUpdates", params=parametri) if data.status_code == 200: data = data.json() if data['ok']: if data['result']: filemanager.writefile("lastid.txt", str(data['result'][0]['update_id'] + 1)) # Controlla che la risposta sia effettivamente un messaggio e non una notifica di servizio if 'message' in data['result'][0]: return data['result'][0]['message'] elif 'edited_message' in data['result'][0]: tmp = { "edit": True, "edit_data": data['result'][0]['edited_message'] } return tmp else: # Non vogliamo DDoSsare telegram, vero? time.sleep(2)
def getupdates() -> dict(): """Ricevi gli ultimi aggiornamenti dal server di Telegram e restituisci l'ultimo messaggio non letto.""" while True: parametri = { 'offset': filemanager.readfile( "lastid.txt"), # Update ID del messaggio da leggere 'limit': 1, # Numero di messaggi da ricevere alla volta, lasciare 1 'timeout': 1500, # Secondi da mantenere attiva la richiesta se non c'e' nessun messaggio } data = requests.get("https://api.telegram.org/bot" + telegramtoken + "/getUpdates", params=parametri) if data.status_code == 200: data = data.json() if data['ok']: if data['result']: filemanager.writefile( "lastid.txt", str(data['result'][0]['update_id'] + 1)) # Controlla che la risposta sia effettivamente un messaggio e non una notifica di servizio if 'message' in data['result'][0]: return data['result'][0]['message'] elif 'edited_message' in data['result'][0]: tmp = { "edit": True, "edit_data": data['result'][0]['edited_message'] } return tmp else: # Non vogliamo DDoSsare telegram, vero? time.sleep(2)
def balurage(): print("@" + username + ": /balurage") # Rispondi commentando l'E3. tosend = str() try: ragelevel = int(filemanager.readfile("ragelevel.txt")) except ValueError: ragelevel = 0 ragelevel += 1 filemanager.writefile("ragelevel.txt", str(ragelevel)) for rage in range(0, ragelevel): tosend += "MADDEN " telegram.sendmessage(tosend, sentin, source)
def getupdates(): """Ricevi gli ultimi aggiornamenti dal server di Telegram e restituisci l'ultimo messaggio non letto.""" while True: parametri = { "offset": filemanager.readfile("lastid.txt"), # Update ID del messaggio da leggere "limit": 1, # Numero di messaggi da ricevere alla volta, lasciare 1 "timeout": 1500, # Secondi da mantenere attiva la richiesta se non c'e' nessun messaggio } data = requests.get("https://api.telegram.org/bot" + telegramtoken + "/getUpdates", params=parametri).json() if data["ok"]: if data["result"]: filemanager.writefile("lastid.txt", str(data["result"][0]["update_id"] + 1)) # Controlla che la risposta sia effettivamente un messaggio e non una notifica di servizio if "message" in data["result"][0]: return data["result"][0]["message"] time.sleep(5)
def diario(): # Aggiungi una riga al diario Royal Games print("@" + username + ": /diario ") if len(cmd) > 1: if cmd[1].isprintable(): cmd[1] = cmd[1].replace("\n", " ") fdiario = filemanager.readfile("diario.txt") fdiario += str(int(time.time())) + "|" + cmd[1] + "\n" filemanager.writefile("diario.txt", fdiario) telegram.sendmessage("Aggiunto al diario RYG.", sentin, source) else: telegram.sendmessage(chr(9888) + " Errore nella scrittura del messaggio.\n" "Il messaggio non è compatibile con il diario.\n" "Probabilmente contiene emoji o caratteri speciali non visualizzabili.", sentin, source) else: telegram.sendmessage(chr(9888) + " Non hai scritto niente sul diario!\n" "Sintassi corretta: /diario _quello che vuoi scrivere_", sentin, source)
def diario(): # Aggiungi una riga al diario Royal Games print("@" + username + ": /diario ") cmd = text.split(" ", 1) if len(cmd) > 1: if cmd[1].isprintable(): cmd[1] = cmd[1].replace("\n", " ") fdiario = filemanager.readfile("diario.txt") fdiario += str(int(time.time())) + "|" + cmd[1] + "\n" filemanager.writefile("diario.txt", fdiario) telegram.sendmessage("Aggiunto al diario RYG.", sentin, source) else: telegram.sendmessage( chr(9888) + " Errore nella scrittura del messaggio.\n" "Visto che non ho la minima idea delle assurdita che ho scritto qui, " "potresti provare a togliere le emoji.", sentin, source) else: telegram.sendmessage( chr(9888) + " Non hai scritto niente sul diario!\n" "Sintassi corretta: /diario _quello che vuoi scrivere_", sentin, source)
def diario(): # Aggiungi una riga al diario Royal Games print("@" + username + ": /diario ") if len(cmd) > 1: if cmd[1].isprintable(): cmd[1] = cmd[1].replace("\n", " ") fdiario = filemanager.readfile("diario.txt") fdiario += str(int(time.time())) + "|" + cmd[1] + "\n" filemanager.writefile("diario.txt", fdiario) telegram.sendmessage("Aggiunto al diario RYG.", sentin, source) else: telegram.sendmessage( chr(9888) + " Errore nella scrittura del messaggio.\n" "Il messaggio non è compatibile con il diario.\n" "Probabilmente contiene emoji o caratteri speciali non visualizzabili.", sentin, source) else: telegram.sendmessage( chr(9888) + " Non hai scritto niente sul diario!\n" "Sintassi corretta: /diario _quello che vuoi scrivere_", sentin, source)
import math import time from telegram.ext import Updater, CommandHandler, CallbackQueryHandler from telegram import ParseMode, InlineKeyboardButton, InlineKeyboardMarkup, Bot from telegram.error import Unauthorized, TimedOut, RetryAfter import filemanager import random import strings as s import logging from typing import List, Union, Dict from roles.roles import * logging.basicConfig(level=logging.WARNING, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') token = filemanager.readfile('telegramapi.txt') updater = Updater(token) freenames = s.names_list.copy() class Player: """Classe di un giocatore. Contiene tutti i dati riguardanti un giocatore all'interno di una partita, come il ruolo, e i dati riguardanti telegram, come ID e username.""" def __init__(self, game: 'Game', tid: int, tusername: str, dummy: bool=False): self.tid = tid # type: int self.tusername = tusername # type: str self.role = Role(self) # type: Role self.alive = True # type: bool self.votingfor = None # type: Union["Player", None] self.votes = 0 # type: int
# -*- coding: utf-8 -*- import requests import filemanager # Per far funzionare questa libreria serve un file "steamapi.txt" contenente la Steam Api Key ottenibile a # http://steamcommunity.com/dev/apikey steamtoken = filemanager.readfile('steamapi.txt') def getplayersummaries(steamid): """Ottieni i dati dei profili steam dei giocatori di cui è stato specificato lo SteamID 32. :param steamid: SteamID 32 dei giocatori, separato da virgola """ # Parametri della richiesta parametri = { 'key': steamtoken, 'steamids': steamid, } # Manda la richiesta ai server di Steam. r = requests.get( "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/", params=parametri).json() if len(r['response']['players']) == 1: return r['response']['players'][0] elif len(r['response']['players']) > 1: return r['response']['players'] else: raise NameError("Lo steamid specificato non esiste.") def getnumberofcurrentplayers(appid):
# -*- coding: utf-8 -*- import json import time import filemanager import telegram import steam import random import osu import lol import discord import subprocess import sm.steammatch as steammatch import db # Elenco di username dei membri della RYG royalgames = json.loads(filemanager.readfile("db.json")) # Stringa dove mettere l'elenco di champion di lol gratuiti lolfreestring = str() random.seed() # Spostiamo qui le funzioni del bot, così è un po' più leggibile def wow(): print("@" + username + ": WOW!") telegram.sendmessage("Wow. Impressionante.", sentin, source) def ahnonlosoio(): print("@" + username + ": /ahnonlosoio")
'apeggia': 'BQADAgAD6wEAAh8GgAGe6IDqRVSAhwI', 'johncena': 'BQADAgAD4AEAAh8GgAFRi-UD1VvyLwI', 'tre': 'BQADAgADEwIAAh8GgAE-iNm-4V6pZAI', 'cinqueanni': 'BQADAgADrgIAAh8GgAGKOIASQZevMwI', 'infilatevi': 'BQADAgAD5gEAAh8GgAFsphnhj_xOnAI', 'invidiosi': 'BQADAgADqAIAAh8GgAEDx7kiV1MdAwI', 'salitipo': 'BQADAgADqQIAAh8GgAHhGzfuq1LGXAI', 'mammadimari': 'BQADAgADpgIAAh8GgAFoIX9f88R-vAI', 'plug': 'BQADAgADrwIAAh8GgAGdfZO0w1wAAYYC', 'spari': 'BQADAgADEQIAAh8GgAHaG4P-MmuJKAI', 'bastagarf': 'BQADAgAD6QEAAh8GgAF0xIIbFxW6NQI', 'omiodio': 'BQADAgADMgIAAh8GgAFe9-lVwzdFzAI', } # Elenco di username dei membri della RYG royalgames = json.loads(filemanager.readfile("db.json")) # Stringa dove mettere l'elenco di champion di lol gratuiti lolfreestring = str() random.seed() # Ciclo principale del bot print("Bot avviato!") while True: try: # Guarda il comando ricevuto. msg = telegram.getupdates() # Se il messaggio non è una notifica di servizio... if 'text' in msg: # Salvatelo in una stringa
import time from telegram.ext import Updater, CommandHandler, CallbackQueryHandler from telegram import ParseMode, InlineKeyboardButton, InlineKeyboardMarkup, Bot from telegram.error import Unauthorized, TimedOut, RetryAfter import filemanager import random import strings as s import logging from typing import List, Union, Dict from roles.roles import * logging.basicConfig( level=logging.WARNING, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') token = filemanager.readfile(telegramapi.txt) updater = Updater(token) freenames = s.names_list.copy() class Player: """Classe di un giocatore. Contiene tutti i dati riguardanti un giocatore all'interno di una partita, come il ruolo, e i dati riguardanti telegram, come ID e username.""" def __init__(self, game: 'Game', tid: int, tusername: str, dummy: bool = False): self.tid = tid # type: int self.tusername = tusername # type: str
import requests import filemanager lolkey = filemanager.readfile("lolapi.txt") def getchampionstaticdata(cid, extra=None): parametri = { 'api_key': lolkey, 'region': "euw", 'locale': "it_IT", 'id': cid, 'champData': extra, } r = requests.get( "https://global.api.pvp.net/api/lol/static-data/euw/v1.2/champion/" + str(cid), params=parametri).json() return r def getfreerotation(): parametri = {'freeToPlay': 'true', 'region': "euw", 'api_key': lolkey} r = requests.get("https://euw.api.pvp.net/api/lol/euw/v1.2/champion", params=parametri).json() return r['champions'] def getmatchlist(sid): parametri = { 'region': "euw",
# -*- coding: utf-8 -*- import requests import filemanager # Importa la API key dal file. apikey = filemanager.readfile("osuapi.txt") def getbeatmap(num): """Ottieni informazioni su una beatmap. :param num: ID della beatmap """ parametri = { 'k': apikey, 'b': num, } r = requests.get("https://osu.ppy.sh/api/get_beatmaps", params=parametri).json() if len(r) >= 1: return r[0] else: raise NameError def getuser(user, mode=0): """Ottieni informazioni su un utente. :param user: Username o ID dell'utente :param mode: Modalita' (0 = osu!, 1 = Taiko, 2 = CtB, 3 = osu!mania) """ parametri = { 'k': apikey, 'u': user,
import json import filemanager db = json.loads(filemanager.readfile("db.json")) def findbyname(name: str): for player in db: if player == name: return db[player] else: return None def findbykey(key, value): for player in db: if player[key] == value: return db[player] else: return None
# -*- coding: utf-8 -*- import requests import filemanager import time # Per far funzionare questa libreria serve un file "lastid.txt" contenente l'update ID dell'ultimo messaggio non letto e # un file "telegramapi.txt" contenente il token di accesso del bot assegnato da @BotFather. telegramtoken = filemanager.readfile("telegramapi.txt") def getme(): """Visualizza dati sul bot.""" # Manda la richiesta data = requests.get("https://api.telegram.org/bot" + telegramtoken + "/getMe") return data def getupdates(): """Ricevi gli ultimi aggiornamenti dal server di Telegram e restituisci l'ultimo messaggio non letto.""" while True: parametri = { "offset": filemanager.readfile("lastid.txt"), # Update ID del messaggio da leggere "limit": 1, # Numero di messaggi da ricevere alla volta, lasciare 1 "timeout": 1500, # Secondi da mantenere attiva la richiesta se non c'e' nessun messaggio } data = requests.get("https://api.telegram.org/bot" + telegramtoken + "/getUpdates", params=parametri).json() if data["ok"]: if data["result"]: filemanager.writefile("lastid.txt", str(data["result"][0]["update_id"] + 1)) # Controlla che la risposta sia effettivamente un messaggio e non una notifica di servizio if "message" in data["result"][0]:
import filemanager import requests # Per far funzionare questa libreria serve un file "hearthstoneapi.txt" con l'API key ricevuta da mashape.com apikey = filemanager.readfile('hearthstoneapi.txt') def card(name): headers = { 'X-Mashape-Key': apikey } parametri = { 'locale': 'itIT' } # TODO: Controllare che questo non sia exploitabile per un XSS o roba del genere. Anche se dubito. r = requests.get("https://omgvamp-hearthstone-v1.p.mashape.com/cards/" + name, params=parametri, headers=headers) if r.status_code != 404: return r.json() else: parametri = { 'locale': 'enUS' } r = requests.get("https://omgvamp-hearthstone-v1.p.mashape.com/cards/search/" + name, params=parametri, headers=headers) if r.status_code != 404: return r.json() else: raise ValueError("La carta non esiste!")
# -*- coding: utf-8 -*- import requests import filemanager # Per far funzionare questa libreria serve un file "steamapi.txt" contenente la Steam Api Key ottenibile a # http://steamcommunity.com/dev/apikey steamtoken = filemanager.readfile('steamapi.txt') def getplayersummaries(steamid): """Ottieni i dati del profilo steam del giocatore di cui è stato specificato lo SteamID 32. :param steamid: SteamID 32 del giocatore """ # Parametri della richiesta parametri = { 'key': steamtoken, 'steamids': steamid, } # Manda la richiesta ai server di Steam. r = requests.get("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/", params=parametri).json() return r['response']['players'][0] def getnumberofcurrentplayers(appid): """Ottieni il numero di giocatori che stanno giocando a un certo gioco. :param appid: ID Steam dell'applicazione """ # Parametri della richiesta parametri = { 'key': steamtoken, 'appid': appid,
# -*- coding: utf-8 -*- import requests import filemanager import time # Per far funzionare questa libreria serve un file "lastid.txt" contenente l'update ID dell'ultimo messaggio non letto e # un file "telegramapi.txt" contenente il token di accesso del bot assegnato da @BotFather. telegramtoken = filemanager.readfile('telegramapi.txt') def getme() -> dict(): """Visualizza dati sul bot.""" # Manda la richiesta data = requests.get("https://api.telegram.org/bot" + telegramtoken + "/getMe") return data def getupdates() -> dict(): """Ricevi gli ultimi aggiornamenti dal server di Telegram e restituisci l'ultimo messaggio non letto.""" while True: parametri = { 'offset': filemanager.readfile( "lastid.txt"), # Update ID del messaggio da leggere 'limit': 1, # Numero di messaggi da ricevere alla volta, lasciare 1 'timeout': 1500, # Secondi da mantenere attiva la richiesta se non c'e' nessun messaggio } data = requests.get("https://api.telegram.org/bot" + telegramtoken + "/getUpdates",
import requests import filemanager lolkey = filemanager.readfile("lolapi.txt") def getchampionstaticdata(cid, extra=None): parametri = {"api_key": lolkey, "region": "euw", "locale": "it_IT", "id": cid, "champData": extra} r = requests.get( "https://global.api.pvp.net/api/lol/static-data/euw/v1.2/champion/" + str(cid), params=parametri ).json() return r def getfreerotation(): parametri = {"freeToPlay": "true", "region": "euw", "api_key": lolkey} r = requests.get("https://euw.api.pvp.net/api/lol/euw/v1.2/champion", params=parametri).json() return r["champions"] def getmatchlist(sid): parametri = {"region": "euw", "api_key": lolkey} r = requests.get( "https://euw.api.pvp.net/api/lol/euw/v2.2/matchlist/by-summoner/" + str(sid), params=parametri ).json() return r