добавлена функция выбери и рандом для доверенных чатов

This commit is contained in:
VladislavOstapov 2023-03-25 00:50:53 +03:00
parent 4a04f7eda4
commit ef19687a0e

39
main.py
View File

@ -1,6 +1,8 @@
import json
import os
import random
import traceback
import shlex
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType, VkLongpollMode
@ -14,6 +16,10 @@ vk_session = vk_api.VkApi(token=os.getenv('VK_ACCESS_TOKEN'), api_version='5.131
vk = vk_session.get_api()
# массив peer_id, которым можно доверять
TRUSTED_USERS = eval(os.getenv('TRUSTED_USERS'))
class Logger:
def __init__(self, filename=None):
self.filename = filename
@ -96,6 +102,35 @@ def log_message_recovery(event):
msg_logger.log(f"message_rec {__create_msg_string(event)}")
def cmd_handler(event, *args):
if event.peer_id not in TRUSTED_USERS:
print(f"Команда {args}: отказано в доступе - недоверенный пользователь id={event.peer_id}")
else:
print(f"Execute {args}")
if len(args) >= 1:
if args[0] == "рандом" or args[0] == "random":
if len(args) != 3:
vk.messages.send(peer_id=event.peer_id, random_id=random.randint(0, 0x7FFFFFFF),
message="Использование команды рандом: /рандом <от> <до>")
else:
try:
start = int(args[1])
end = int(args[2])
vk.messages.send(peer_id=event.peer_id, random_id=random.randint(0, 0x7FFFFFFF),
message=f"Результат: {random.randint(start, end)}")
except Exception:
vk.messages.send(peer_id=event.peer_id, random_id=random.randint(0, 0x7FFFFFFF),
message="Один из аргументов не является числом!")
if args[0] == "выбери" or args[0] == "select":
if len(args) == 1:
vk.messages.send(peer_id=event.peer_id, random_id=random.randint(0, 0x7FFFFFFF),
message="Использование команды выбери: /выбери <одно> [второе] [третье] ...")
else:
vk.messages.send(peer_id=event.peer_id, random_id=random.randint(0, 0x7FFFFFFF),
message=f"Результат: {random.choice(args[2:])}")
def lp_loop():
mode = VkLongpollMode.GET_ATTACHMENTS | VkLongpollMode.GET_EXTENDED | VkLongpollMode.GET_PTS |\
VkLongpollMode.GET_EXTRA_ONLINE | VkLongpollMode.GET_RANDOM_ID
@ -107,6 +142,10 @@ def lp_loop():
for event in lp.listen():
if event.type == VkEventType.MESSAGE_NEW:
log_new_message(event)
# event.from_me and
if event.from_user and event.text.startswith("/"):
first_line = event.text[1:].split('\n')[0].replace('&quot;', '"')
cmd_handler(event, *shlex.split(first_line))
elif event.type == VkEventType.MESSAGE_EDIT:
log_message_edit(event)
elif event.type == VkEventType.MESSAGE_FLAGS_SET: