1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-23 19:44:20 +00:00
royalnet/telegram.py

120 lines
4 KiB
Python

# -*- 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'] == True):
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 (tiziocaio si è unito alla chat)
if('message' in data['result'][0]):
return data['result'][0]['message']
time.sleep(5)
def sendMessage(content, to):
"""Manda un messaggio a una chat."""
#Parametri del messaggio
parametri = {
'chat_id': to, #L'ID della chat a cui mandare il messaggio, Royal Games: -2141322
'text': content, #Il messaggio da mandare
'parse_mode': 'Markdown', #Formattare il messaggio?
}
#Manda il messaggio
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendMessage", params=parametri)
def forwardMessage(msg, sentby, to):
"""Inoltra un messaggio mandato in un'altra chat."""
#Parametri del messaggio
parametri = {
'chat_id': to,
'from_chat_id': sentby,
'message_id': msg,
}
#Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/forwardMessage", params=parametri)
def sendAudio(aud, to):
"""Manda un file audio .mp3 a una chat."""
parametri = {
'chat_id': to,
'audio': aud,
}
#Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendAudio", params=parametri)
def sendDocument(doc, to):
"""Manda un file a una chat."""
parametri = {
'chat_id': to,
'document': doc,
}
#Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendDocument", params=parametri)
def sendSticker(stk, to):
"""Manda uno sticker a una chat."""
parametri = {
'chat_id': to,
'sticker': stk,
}
#Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendSticker", params=parametri)
def sendVideo(vid, to):
"""Manda un video .mp4 a una chat."""
parametri = {
'chat_id': to,
'video': vid,
}
#Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendVideo", params=parametri)
def sendVoice(aud, to):
"""Manda un file audio .ogg con OPUS a una chat."""
parametri = {
'chat_id': to,
'voice': aud,
}
#Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendVoice", params=parametri)
def sendLocation(lat, long, to):
"""Manda una posizione sulla mappa."""
#Parametri del messaggio
parametri = {
'chat_id': to,
'latitude': lat,
'longitude': long,
}
#Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendLocation", params=parametri)
def sendChatAction(to, type='typing'):
"""Visualizza lo stato "sta scrivendo" del bot."""
#Parametri del messaggio
parametri = {
'chat_id': to,
'action': type,
}
#Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendChatAction", params=parametri)