예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
파일: bot.py 프로젝트: Steffo99/royal-bot
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)
예제 #5
0
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)
예제 #6
0
파일: bot.py 프로젝트: Steffo99/royal-bot
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)
예제 #7
0
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)
예제 #8
0
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)
예제 #9
0
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
예제 #10
0
# -*- 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):
예제 #11
0
# -*- 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")
예제 #12
0
    '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
예제 #13
0
    '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
예제 #14
0
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
예제 #15
0
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",
예제 #16
0
# -*- 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,
예제 #17
0
파일: db.py 프로젝트: Steffo99/royal-bot
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

예제 #18
0
# -*- 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]:
예제 #19
0
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
예제 #20
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!")
예제 #21
0
파일: bot.py 프로젝트: Steffo99/royal-bot
# -*- 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")
예제 #22
0
# -*- 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,
예제 #23
0
# -*- 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",
예제 #24
0
파일: lol.py 프로젝트: Steffo99/royal-bot
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