-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsendTextDesktop.py
More file actions
147 lines (116 loc) · 4.11 KB
/
Copy pathsendTextDesktop.py
File metadata and controls
147 lines (116 loc) · 4.11 KB
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# @author: https://github.com/key6oardWarrior
import os
import sys
import datetime
from twilio.rest import Client
class SetUp:
def addNums2File(self): # add each number to file
numbers = 0
try: # handle type mismatch
numbers = int(input("Enter number: "))
except:
print("Please only enter numbers")
return self.addNums2File()
if len(str(numbers)) != 10:
print("Your number must be 10 digits")
return self.addNums2File()
else:
open("textToNumbers.txt", "a").write(str(numbers) + " ")
def howManyNumbers(self): # ask user how many numbers do they want to add
num = 0
try: # handle type mismatch
num = int(input("Enter how many numbers you want to text: "))
except:
print("Enter only numbers")
return self.howManyNumbers()
if num <= 0:
print("Number must be greater than 0")
return self.howManyNumbers()
for i in range(0, num):
self.addNums2File()
def removeNums(self): # remove numbers from list of nums 2 be texted
nums = open("textToNumbers.txt", "r").read().split()
nums2Remove = input("What numbers do you want to remove? Seprate each phone number each by a whitespace. ").split()
for i in nums2Remove:
if i in nums:
INDEX = nums.index(i)
del nums[INDEX]
for i in nums:
open("textToNumbers.txt", "w").write(i + " ")
class MsgTimer:
def timeChanger(self):
open("textTime.txt", "w").write(input("What time do you want your message to be recived? Format MUST BE: hh:mm:ss "))
def msgChanger(self):
open("message.txt", "w").write(input("Enter new message: "))
def sendMessage(self): # send a message to each number on file
textFrom = open("textFrom.txt", "r").read().strip(" ")
lstNums = open("textToNumbers.txt", "r").read().split()
message = open("message.txt", "r").read()
for i in lstNums: # send message
message = Main.client.messages.create(
body = message + "\nThis is an automated messaging system. Designed by https://github.com/key6oardWarrior via Twilio API",
from_ = textFrom,
to = i
)
if message.sid == Main.sid: # print either error or success for each number
print(message.sid, "sent the message!")
else:
print(message.sid, "error sending to", i)
def getTime(self): # return what time it is
return datetime.datetime.now().strftime("%X")
def timer(self, msgTimer): # determin when to send the message
while getTime() != msgTimer:
pass
sendMessage()
class Main:
client = ""
sid = ""
def main(self): # handle user input
setUp = SetUp()
authToken = ""
if not(os.path.exists("AUTH.txt")): # first time users setup
authFile = open("AUTH.txt", "w")
authFile.write(input("Enter Twilio SID: ") + ", ")
authFile.write(input("Enter Twilio authentcation token: "))
authFile.close()
authFile = open("AUTH.txt", "r").read()
try:
sid = authFile[:34]
authToken = authFile[36:]
except:
os.remove("AUTH.txt")
print("SID must be 34 characters long and authentcation token must be at least 32 characters long. Please exit program and try again!")
sys.exit()
try:
client = Client(sid, authToken)
except:
print("SID and Token must be authentic.")
if os.path.exists("textToNumbers.txt"):
isAddNums = input("Do you want to add numbers to be texted? Y/n ")
if isAddNums.upper() == "Y":
setUp.howManyNumbers()
isRemoveNumbers = input("Do you want to remove any numbers? Y/n ")
if isRemoveNumbers.upper() == "Y":
setUp.removeNums()
changeTime = input("Do you want to change the send time? Y/n ")
if changeTime.upper() == "Y":
setUp.timeChanger()
changeMessage = input("Do you want to change the automated message? Y/n ")
if changeMessage.upper() == "Y":
setUp.msgChanger()
print("Starting auto texting application")
sendTime = open("textTime.txt", "r").read()
sendMsg = MsgTimer()
sendMsg.timer(sendTime)
else: # first time users setup
numberFile = open("textToNumbers.txt", "w")
numberFile.close()
setUp.howManyNumbers()
setUp.msgChanger()
setUp.timeChanger()
print("Starting auto texting application")
sendTime = open("textTime.txt", "r").read()
sendMsg = MsgTimer()
sendMsg.timer(sendTime)
app = Main()
app.main()