1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
import sys
import time
from pprint import pprint
import telepot
import urllib.request
import time
from PIL import Image
import os
final_path = "photo/final.png"
taulu_im = Image.open("taulu.png")
url = "https://api.telegram.org/file/bot<token>/"
offset_id = 0
img_size = (640, 640)
taulu_im.thumbnail(img_size, Image.ANTIALIAS)
def handle(res):
msg = res[-1]["message"]["text"]
if not ("/taulu" in msg):
return False
taulu_res = res[-2]
print("New activity!")
chat_id = taulu_res["message"]["chat"]["id"]
if res[-1]["message"]["chat"]["id"] != chat_id:
print("Chat id clash!")
return False
taulu_user = taulu_res["message"]["from"]["id"]
print("taulu: {}".format(taulu_res["message"]["from"]["first_name"]))
photos = bot.getUserProfilePhotos(taulu_user)
if photos["total_count"] == 0:
bot.sendMessage(chat_id, "Vitun taulu, hommaa kuva!")
return True
print("pic count: {}".format(photos["total_count"]))
pic = photos["photos"][0][-1]
file_id = pic["file_id"]
if not os.path.exists("photo/"):
os.makedirs("photo/")
filepath = "photo/" + file_id + ".jpg"
bot.downloadFile(file_id, filepath)
time.sleep(2)
im = Image.open(filepath)
im.thumbnail(img_size, Image.ANTIALIAS)
im.paste(taulu_im, (0, 0), taulu_im)
im.save(final_path)
time.sleep(2)
f = open(final_path, "rb")
print("Sending photo {} to chat {}...".format(final_path, chat_id))
bot.sendPhoto(chat_id, f)
return True
# Getting the token from command-line is better than embedding it in code,
# because tokens are supposed to be kept secret.
TOKEN = sys.argv[1]
bot = telepot.Bot(TOKEN)
print('Listening ...')
# Keep the program running.
while 1:
time.sleep(10)
res = bot.getUpdates(offset=offset_id)
print("update count: {}".format(len(res)))
print("offset_id: {}".format(offset_id))
if len(res) > 4:
offset_id = res[-4]["update_id"]
if len(res) > 1:
pprint(res)
try:
success = handle(res)
if success:
offset_id = res[-1]["update_id"]
except Exception as e:
print("Exception! Details: {}".format(e))
|