You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
2.0 KiB

2 months ago
# -*- coding: utf-8 -*-
import vk_api
from requests import get
from os import getenv
from random import randint
from config import headers
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
from dotenv import load_dotenv
from pathlib import Path
dotenv_path = f"{Path(__file__).parent.resolve()}/.env"
load_dotenv(dotenv_path=dotenv_path)
vk_session = vk_api.VkApi(token=getenv("vk_token"))
vk_session._auth_token()
vk_api = vk_session.get_api()
longpoll = VkBotLongPoll(vk_session, getenv("vk_group_id"))
commands = ["/mrp", "/mrp_online", "/pomoidor", "/mordor", "/мордор", "/мрп", "рп_онлайн", "/помойдор"]
def get_online():
try:
response = get("https://l.mordor-rp.com/launcher/monitoring/online.php", headers=headers).json()
rponl = 0; obsonl = 0; funonl = 0; text = ""
for element in response:
text += f'[{element["name"]}]: {element["min"]}\n'
obsonl += int(element["min"])
if element["tag"] == "roleplay": rponl += int(element["min"])
if element["tag"] == "fun": funonl += int(element["min"])
text += f"========================\n" \
f"ROLEPLAY ONLINE: {rponl}\n" \
f"FUN ONLINE: {funonl}\n" \
f"========================\n" \
f"FULL ONLINE: {obsonl}"
return(text)
except:
return("Ошибка.")
def send(pid, msg):
rid = randint(1, 2147483647)
vk_api.messages.send(peer_id=pid, message=msg, random_id=rid)
if __name__ == "__main__":
while True:
try:
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW:
peer_id = event.object.message["peer_id"]
text = event.object.message["text"]
if text.lower() in commands:
send(peer_id, f"{get_online()}")
elif text.lower() in ["/help", "/хелп", "/помощь"]:
send(peer_id, "Команды:\nПолучение онлайна Mordor RP:\n- /mrp\n- /mrp_online\n- /pomoidor\n- /mordor\n- /мрп\n- /мрп_онлайн\n- /помойдор\n- /мордор")
except Exception:
pass