44 Commits

Author SHA1 Message Date
38a211a661 Merge pull request 'Update dependency libbot to v2.0.1' (#28) from renovate/libbot-2.x into master
Reviewed-on: #28
2023-08-11 11:31:27 +03:00
43d3f075cf Update dependency libbot to v2.0.1 2023-08-10 22:50:22 +03:00
7271624519 Merge pull request 'Update dependency libbot to v2' (#27) from renovate/libbot-2.x into master
Reviewed-on: #27
2023-08-07 13:08:08 +03:00
58a1ad0926 Update dependency libbot to v2 2023-08-07 13:05:27 +03:00
03ca3d1eb7 Bump libbot to 0.2.2 2023-08-06 22:15:10 +02:00
e1734376fe Merge pull request 'Update dependency puppeteer to v21' (#26) from renovate/puppeteer-21.x into master
Reviewed-on: #26
2023-08-02 17:31:44 +03:00
18391544f2 Update dependency puppeteer to v21 2023-08-02 16:24:25 +03:00
d97f2fa591 Merge pull request 'Update dependency libbot to v1.9' (#25) from renovate/libbot-1.x into master
Reviewed-on: #25
2023-07-26 15:28:12 +03:00
f17440a6b8 Update dependency libbot to v1.9 2023-07-26 15:23:58 +03:00
91f701491e Merge pull request 'Update dependency puppeteer to ~20.9.0' (#24) from renovate/puppeteer-20.x into master
Reviewed-on: #24
2023-07-20 11:31:11 +03:00
e412d09cec Update dependency puppeteer to ~20.9.0 2023-07-20 11:18:57 +03:00
3da8e9c074 Replaced owner_id with app.owner 2023-07-14 12:42:47 +02:00
0fea30ccfd Moving to example config 2023-07-14 12:40:00 +02:00
ff82e19a4f Replaced app 2023-07-14 12:39:12 +02:00
01f8a73dae WIP: Improvements 2023-07-14 12:36:42 +02:00
d9b72e5ad8 Typo fixed 2023-07-14 12:08:40 +02:00
9d33ca744a Added executable path 2023-07-14 12:07:06 +02:00
93096eb52b Merge pull request 'Update dependency puppeteer to ~20.8.0' (#23) from renovate/puppeteer-20.x into master
Reviewed-on: #23
2023-07-06 18:51:32 +03:00
1ef0976e34 Update dependency puppeteer to ~20.8.0 2023-07-06 18:09:32 +03:00
0ff4ac2cb5 Merge pull request 'Update dependency libbot to v1.8' (#22) from renovate/libbot-1.x into master
Reviewed-on: #22
2023-07-03 13:54:16 +03:00
a78b471785 Update dependency libbot to v1.8 2023-07-03 12:01:33 +03:00
a44d059b5d Merge pull request 'Update dependency libbot to v1.7' (#21) from renovate/libbot-1.x into master
Reviewed-on: #21
2023-06-30 12:46:48 +03:00
7ac5252429 Update dependency libbot to v1.7 2023-06-30 11:45:28 +03:00
79b8ebf7d0 Merge pull request 'Update dependency libbot to v1.6' (#20) from renovate/libbot-1.x into master
Reviewed-on: #20
2023-06-29 17:49:54 +03:00
209cc60226 Update dependency libbot to v1.6 2023-06-29 17:10:59 +03:00
5391ccfb75 Merge pull request 'Update dependency libbot to v1.5' (#19) from renovate/libbot-1.x into master
Reviewed-on: #19
2023-06-26 15:03:44 +03:00
6db861d54b Update dependency libbot to v1.5 2023-06-26 15:00:02 +03:00
3170274a13 Merge pull request 'Update dependency libbot to v1' (#18) from renovate/libbot-1.x into master
Reviewed-on: #18
2023-06-20 14:13:05 +03:00
32d9f76e38 Update dependency libbot to v1 2023-06-20 14:02:10 +03:00
0b82d39aab Merge pull request 'Update dependency puppeteer to ~20.7.0' (#16) from renovate/puppeteer-20.x into master
Reviewed-on: #16
2023-06-14 11:48:42 +03:00
cf522ab254 Merge pull request 'Update dependency libbot to v0.8' (#15) from renovate/libbot-0.x into master
Reviewed-on: #15
2023-06-14 11:48:20 +03:00
7be86f04c2 Update dependency puppeteer to ~20.7.0 2023-06-14 11:40:54 +03:00
4bc5ffb867 Update dependency libbot to v0.8 2023-06-14 11:40:51 +03:00
1be04dbea0 Merge pull request 'Update dependency ujson to v5.8.0' (#14) from renovate/ujson-5.x into master
Reviewed-on: #14
2023-06-11 12:29:24 +03:00
b4b102421f Update dependency ujson to v5.8.0 2023-06-11 12:17:53 +03:00
852c7d962a Merge pull request 'Update dependency libbot to v0.7' (#12) from renovate/libbot-0.x into master
Reviewed-on: #12
2023-06-04 12:46:09 +03:00
d7c393b5cd Update dependency libbot to v0.7 2023-06-03 20:50:31 +03:00
c2828f1baf Merge pull request 'Update dependency puppeteer to ~20.5.0' (#13) from renovate/puppeteer-20.x into master
Reviewed-on: #13
2023-06-03 20:47:26 +03:00
de3ecc22be Update dependency puppeteer to ~20.5.0 2023-05-31 16:35:01 +03:00
d98afc53ca Merge pull request 'Update dependency puppeteer to ~20.4.0' (#11) from renovate/puppeteer-20.x into master
Reviewed-on: #11
2023-05-25 11:45:57 +03:00
997da7bd2f Update dependency puppeteer to ~20.4.0 2023-05-25 08:20:21 +03:00
4a90544b52 Added node_modules to ignore 2023-05-22 20:52:44 +02:00
45d8c830d6 Merge pull request 'Update dependency puppeteer to ~20.3.0' (#10) from renovate/puppeteer-20.x into master
Reviewed-on: #10
2023-05-22 14:54:21 +03:00
8ca5916be5 Update dependency puppeteer to ~20.3.0 2023-05-22 11:28:51 +03:00
14 changed files with 119 additions and 129 deletions

4
.gitignore vendored
View File

@@ -159,6 +159,10 @@ config.json
*.session
*.session-journal
.venv
venv
venv_linux
venv_windows
PageSaver/node_modules
bin/

View File

@@ -1,6 +1,6 @@
{
"dependencies": {
"puppeteer": "~20.2.0",
"puppeteer": "~21.0.0",
"user-agents": "~1.0.1260"
}
}

View File

@@ -6,7 +6,8 @@ const userAgent = require('user-agents');
(async () => {
const url = process.argv[2];
const browser = await puppeteer.launch();
const binary = process.argv[3];
const browser = await puppeteer.launch({ executablePath: binary });
const page = await browser.newPage();
await page.setUserAgent(userAgent.random().toString());

View File

@@ -2,8 +2,7 @@ import logging
from os import getpid
from convopyro import Conversation
from modules.app import PyroClient
from libbot.pyrogram.classes import PyroClient
logging.basicConfig(
level=logging.INFO,

View File

@@ -1,10 +0,0 @@
{
"owner_id": 0,
"bot": {
"api_id": 0,
"api_hash": "",
"bot_token": "",
"workers": 1
},
"use_compiled_page_saver": false
}

80
config_example.json Normal file
View File

@@ -0,0 +1,80 @@
{
"locale": "en",
"bot": {
"owner": 0,
"api_id": 0,
"api_hash": "",
"bot_token": "",
"scoped_commands": true
},
"use_compiled_page_saver": false,
"reports": {
"chat_id": "owner"
},
"disabled_plugins": [],
"commands": {
"help": {
"scopes": [
{
"name": "BotCommandScopeDefault"
},
{
"name": "BotCommandScopeChat",
"chat_id": "owner"
}
]
},
"balance": {
"scopes": [
{
"name": "BotCommandScopeDefault"
},
{
"name": "BotCommandScopeChat",
"chat_id": "owner"
}
]
},
"topup": {
"scopes": [
{
"name": "BotCommandScopeDefault"
},
{
"name": "BotCommandScopeChat",
"chat_id": "owner"
}
]
},
"setcard": {
"scopes": [
{
"name": "BotCommandScopeDefault"
},
{
"name": "BotCommandScopeChat",
"chat_id": "owner"
}
]
},
"resetcard": {
"scopes": [
{
"name": "BotCommandScopeDefault"
},
{
"name": "BotCommandScopeChat",
"chat_id": "owner"
}
]
},
"shutdown": {
"scopes": [
{
"name": "BotCommandScopeChat",
"chat_id": "owner"
}
]
}
}
}

10
locale/en.json Normal file
View File

@@ -0,0 +1,10 @@
{
"commands": {
"help": "Help menu",
"balance": "Card's balance",
"topup": "Refill the card",
"setcard": "Link the card",
"resetcard": "Unlink the card",
"shutdown": "Turn the bot off"
}
}

10
locale/uk.json Normal file
View File

@@ -0,0 +1,10 @@
{
"commands": {
"help": "Меню допомоги",
"balance": "Баланс картки",
"topup": "Поповнити картку",
"setcard": "Прив'язати картку",
"resetcard": "Відв'язати картку",
"shutdown": "Вимкнути бота"
}
}

View File

@@ -1,104 +0,0 @@
import logging
from os import getpid
from time import time
import pyrogram
from libbot import config_get
from pyrogram.client import Client
from pyrogram.errors import BadRequest
from pyrogram.raw.all import layer
from pyrogram.types import BotCommand, BotCommandScopeChat
from ujson import loads
logger = logging.getLogger(__name__)
class PyroClient(Client):
def __init__(self):
with open("config.json", "r", encoding="utf-8") as f:
config = loads(f.read())
super().__init__(
name="bwtbot",
api_id=config["bot"]["api_id"],
api_hash=config["bot"]["api_hash"],
bot_token=config["bot"]["bot_token"],
workers=config["bot"]["workers"],
plugins=dict(root="plugins", exclude=config["disabled_plugins"]),
sleep_threshold=120,
)
async def start(self):
await super().start()
self.start_time = time()
logger.info(
"Bot is running with Pyrogram v%s (Layer %s) and has started as @%s on PID %s.",
pyrogram.__version__,
layer,
self.me.username,
getpid(),
)
try:
await self.send_message(
chat_id=await config_get("chat_id", "reports"),
text=f"Bot started PID `{getpid()}`",
)
except BadRequest:
logger.warning("Unable to send message to report chat.")
await self.set_bot_commands(
[
BotCommand("help", "Меню допомоги"),
BotCommand("balance", "Баланс картки"),
BotCommand("topup", "Поповнити картку"),
BotCommand("setcard", "Прив'язати картку"),
BotCommand("resetcard", "Відв'язати картку"),
],
language_code="uk",
)
await self.set_bot_commands(
[
BotCommand("help", "Меню допомоги"),
BotCommand("balance", "Баланс картки"),
BotCommand("topup", "Поповнити картку"),
BotCommand("setcard", "Прив'язати картку"),
BotCommand("resetcard", "Відв'язати картку"),
],
language_code="ru",
)
await self.set_bot_commands(
[
BotCommand("help", "Help menu"),
BotCommand("balance", "Card's balance"),
BotCommand("topup", "Refill card"),
BotCommand("setcard", "Link card"),
BotCommand("resetcard", "Unlink card"),
]
)
await self.set_bot_commands(
[
BotCommand("help", "Help menu"),
BotCommand("balance", "Card's balance"),
BotCommand("topup", "Refill card"),
BotCommand("setcard", "Link card"),
BotCommand("resetcard", "Unlink card"),
BotCommand("shutdown", "Turn off the bot"),
],
scope=BotCommandScopeChat(chat_id=await config_get("owner_id")),
)
async def stop(self):
try:
await self.send_message(
chat_id=await config_get("chat_id", "reports"),
text=f"Bot stopped with PID `{getpid()}`",
)
except BadRequest:
logger.warning("Unable to send message to report chat.")
await super().stop()
logger.warning(f"Bot stopped with PID {getpid()}.")

View File

@@ -32,6 +32,7 @@ async def getWaterLeft(cardid, filename, app=None):
[
"PageSaver/pageSaver",
f"https://bwtaqua.com.ua/card-topup/?id={cardid}",
"./bin/chrome",
]
) # , ">", f"data/pages/{str(filename)}.html"])
html_file = proc.decode("utf-8")
@@ -41,6 +42,7 @@ async def getWaterLeft(cardid, filename, app=None):
"node",
"./PageSaver/pageSaver.js",
f"https://bwtaqua.com.ua/card-topup/?id={cardid}",
"./bin/chrome",
]
) # , ">", f"data/pages/{str(filename)}.html"])
html_file = proc.decode("utf-8")
@@ -82,7 +84,7 @@ async def getWaterLeft(cardid, filename, app=None):
if app != None:
await app.send_message(
await config_get("owner_id"),
app.owner,
f"**Exception occured:**\n • User: `{str(filename)}`\n • Card: [{cardid}]({url})\n • Exception: `{exp}`\n • TMP UUID: `{tmp_name}`\n • Traceback: `{format_exc()}`",
disable_web_page_preview=True,
)

View File

@@ -29,7 +29,5 @@ def userReset(userid, key: str):
def userGet(userid, key: str):
try:
return sync.json_read("data/database.json")[str(userid)][key]
except KeyError:
return None
except FileNotFoundError:
except (KeyError, FileNotFoundError):
return None

View File

@@ -52,12 +52,12 @@ async def command_balance(app: Client, msg: Message):
f"User {str(msg.from_user.id)} tried to get balance without card set"
)
except Exception as exp:
if msg.from_user.id != await config_get("owner_id"):
if msg.from_user.id != app.owner:
await msg.reply_text(
(await string("error_occured")).format(await string("get_number"))
)
await app.send_message(
await config_get("owner_id"),
app.owner,
f"Error occured by {str(msg.from_user.id)}:\nException: `{exp}`\nTraceback: `{format_exc()}`",
)
logger.warning(f"User {str(msg.from_user.id)} could not get left water amount")

View File

@@ -15,7 +15,7 @@ logger = logging.getLogger(__name__)
~filters.scheduled & filters.command(["kill", "die", "shutdown"], prefixes="/") # type: ignore
)
async def command_shutdown(app: Client, msg: Message):
if msg.from_user.id == await config_get("owner_id"):
if msg.from_user.id == app.owner:
await msg.reply_text(f"Shutting down bot with pid **{getpid()}**")
logger.info(f"Shutting down as requested by {msg.from_user.id}")
exit()

View File

@@ -3,7 +3,7 @@ convopyro==0.5
pathlib~=1.0.1
pyrogram==2.0.106
tgcrypto==1.2.5
ujson==5.7.0
ujson==5.8.0
uvloop==0.17.0
--extra-index-url https://git.end-play.xyz/api/packages/profitroll/pypi/simple
libbot[speed,pyrogram]==0.4
libbot[speed,pyrogram]==2.0.1