Example #1
0
def cmd(api, message, args):
    for_all = None if message['from_id'] == message['peer_id'] else True

    if message.get('reply_message') is not None:
        target = api.users.get(user_ids=message['reply_message']['from_id'])
    else:
        try:
            target = api.users.get(user_ids=functions.getUserId(args[1]))
        except:
            api.messages.edit(
                peer_id=message['peer_id'],
                message_id=message['id'],
                message=
                f"{config.prefixes['error']} Необходимо ответить на сообщение пользователя или указать на него ссылку: /uid [пользователь]"
            )
            time.sleep(3)
            api.messages.delete(message_ids=message['id'],
                                delete_for_all=for_all)
            return

    api.messages.edit(
        peer_id=message['peer_id'],
        message_id=message['id'],
        message=
        f"{config.prefixes['success']} ID пользователя: {target[0]['id']}")
Example #2
0
def cmd(api, message, args, owner_id):
    for_all = None if message['from_id'] == message['peer_id'] else True

    if message.get('reply_message') is not None:
        target = api.users.get(user_ids=message['reply_message']['from_id'])
    else:
        try:
            target = api.users.get(user_ids=functions.getUserId(args[1]))
        except:
            api.messages.edit(
                peer_id=message['peer_id'],
                message_id=message['id'],
                message=
                f"{config.prefixes['error']} Необходимо ответить на сообщение пользователя или указать на него ссылку: /ignore [пользователь]"
            )
            time.sleep(3)
            api.messages.delete(message_ids=message['id'],
                                delete_for_all=for_all)
            return

    ignored_users = functions.getData('ignore')
    if ignored_users is None: ignored_users = []

    target = target[0]
    if target['id'] in ignored_users:
        api.messages.edit(
            peer_id=message['peer_id'],
            message_id=message['id'],
            message=
            f"{config.prefixes['invalid']} [id{target['id']}|{target['first_name']} {target['last_name']}] уже игнорируется."
        )
        return

    if owner_id == target['id']:
        api.messages.edit(peer_id=message['peer_id'],
                          message_id=message['id'],
                          message="❌ Нельзя игнорировать самого себя!")
        return

    ignored_users.append(target['id'])
    edit = functions.editData('ignore', ignored_users)

    if edit:
        api.messages.edit(
            peer_id=message['peer_id'],
            message_id=message['id'],
            message=
            f"{config.prefixes['success']} [id{target['id']}|{target['first_name']} {target['last_name']}] теперь будет игнорироваться!"
        )
    else:
        api.messages.edit(
            peer_id=message['peer_id'],
            message_id=message['id'],
            message=
            f"Пользователя {config.prefixes['error']} [id{target['id']}|{target['first_name']} {target['last_name']}] не получилось отправить в игнор. Возможно данные повреждены."
        )

    return
Example #3
0
def cmd(api, message, args):
    for_all = None if message['from_id'] == message['peer_id'] else True

    if message.get('reply_message') is not None:
        target = api.users.get(user_ids=message['reply_message']['from_id'])
    else:
        try:
            target = api.users.get(user_ids=functions.getUserId(args[1]))
        except:
            api.messages.edit(
                peer_id=message['peer_id'],
                message_id=message['id'],
                message=
                f"{config.prefixes['error']} Необходимо ответить на сообщение пользователя или указать на него ссылку: /unban [пользователь]"
            )
            time.sleep(3)
            api.messages.delete(message_ids=message['id'],
                                delete_for_all=for_all)
            return

    banned = functions.getData('banned')
    if banned is None: banned = []

    target = target[0]
    if not (target['id'] in banned):
        api.messages.edit(
            peer_id=message['peer_id'],
            message_id=message['id'],
            message=
            f"{config.prefixes['invalid']} [id{target['id']}|{target['first_name']} {target['last_name']}] не заблокирован."
        )
        return

    banned.remove(target['id'])
    edit = functions.editData('banned', banned)

    if edit:
        api.messages.edit(
            peer_id=message['peer_id'],
            message_id=message['id'],
            message=
            f"{config.prefixes['success']} [id{target['id']}|{target['first_name']} {target['last_name']}] был разблокирован!"
        )
    else:
        api.messages.edit(
            peer_id=message['peer_id'],
            message_id=message['id'],
            message=
            f"{config.prefixes['error']} Пользователя [id{target['id']}|{target['first_name']} {target['last_name']}] не получилось разблокировать. Возможно данные повреждены."
        )

    return
Example #4
0
def cmd(api, message, args):
    for_all = None if message['from_id'] == message['peer_id'] else True

    if message.get('reply_message') is not None:
        target = api.users.get(user_ids=message['reply_message']['from_id'])
    else:
        try:
            target = api.users.get(user_ids=functions.getUserId(args[1]))
        except:
            api.messages.edit(
                peer_id=message['peer_id'],
                message_id=message['id'],
                message=
                f"{config.prefixes['error']} Необходимо ответить на сообщение пользователя или указать на него ссылку: /unignore [пользователь]"
            )
            time.sleep(3)
            api.messages.delete(message_ids=message['id'],
                                delete_for_all=for_all)
            return

    ignored_users = functions.getData('ignore')
    if ignored_users is None: ignored_users = []

    target = target[0]
    if not (target['id'] in ignored_users):
        api.messages.edit(
            peer_id=message['peer_id'],
            message_id=message['id'],
            message=
            f"{config.prefixes['invalid']} [id{target['id']}|{target['first_name']} {target['last_name']}] не игнорируется."
        )
        return

    ignored_users.remove(target['id'])
    edit = functions.editData('ignore', ignored_users)

    if edit:
        api.messages.edit(
            peer_id=message['peer_id'],
            message_id=message['id'],
            message=
            f"{config.prefixes['success']} [id{target['id']}|{target['first_name']} {target['last_name']}] был удалён из списка игнорируемых!"
        )
    else:
        api.messages.edit(
            peer_id=message['peer_id'],
            message_id=message['id'],
            message=
            f"Пользователя {config.prefixes['error']} [id{target['id']}|{target['first_name']} {target['last_name']}] не получилось удалить из списка игнорируемых. Возможно данные повреждены."
        )

    return
Example #5
0
def cmd(api, message, args, owner_id):
    try:
        if message.get('reply_message') is not None:
            user_id = message['reply_message']['from_id']
        else:
            user_id = functions.getUserId(args[1])

        target = api.users.get(user_ids=user_id)
        target = target.pop()
    except:
        api.messages.send(
            random_id=0,
            peer_id=message['peer_id'],
            message=
            f"{config.prefixes['error']} Необходимо ответить на сообщение пользователя или указать на него ссылку: /tc [пользователь]",
            reply_to=message['id'])
        return

    tester_info = ujson.decode(
        requests.get(
            f"https://ssapi.ru/vk-bugs-api/?method=getReporter&reporter_id={target['id']}"
        ).text)
    if tester_info.get('error') is True:
        api.messages.send(
            peer_id=message['peer_id'],
            random_id=0,
            message=
            f"{config.prefixes['error']} Ошибка при обращении к API: {tester_info.get('error_msg')}",
            reply_to=message['id'],
            disable_mentions=True)
    else:
        tester_info = tester_info.get('response').get('reporter')
        if not tester_info.get('tester'):
            api.messages.send(
                peer_id=message['peer_id'],
                random_id=0,
                message=
                f"{config.prefixes['success_no']} [id{target['id']}|{target['first_name']} {target['last_name']}] не тестировщик из [testpool|/testpool].",
                reply_to=message['id'],
                disable_mentions=True)
        else:
            api.messages.send(
                peer_id=message['peer_id'],
                random_id=0,
                message=
                f"{config.prefixes['success']} [id{target['id']}|{target['first_name']} {target['last_name']}] тестировщик из [testpool|/testpool].\n\n• {tester_info.get('status_text')}\n• Количество отчётов: {tester_info.get('reports_count')}\n• Место в топе: {tester_info.get('top_position')}\n\nhttps://vk.com/bugs?act=reporter&id={target['id']}",
                reply_to=message['id'],
                disable_mentions=True)

    return
Example #6
0
def post(s, form, args):
	page = "/viewthread?t={}".format(args["t"])

	from functions import checkLogin

	# Redirect if not logged in
	if not checkLogin(s.headers):
		return "/login"

	# Import needed functions
	from functions import getUsername
	from functions import getUserId
	from functions import checkFieldsBlank

	# Make sure values entered are alright
	fields = ["message"]
	if checkFieldsBlank(form, fields):
		return page

	db = getMongoClient()

	# Get Collections
	colForums = db.forums
	colThreads = db.threads
	colPosts = db.posts

	# Insert reply into database
	reply = {"thread": ObjectId(args["t"]),
			"author": getUserId(getUsername(s.headers)),
			"content": formatPost(form["message"].value),
			"time": time.time()}
	
	post_id = colPosts.insert(reply)

	# Update replies and posts counts
	thread = colThreads.find_one({"_id": ObjectId(args["t"])})
	colThreads.update({"_id": ObjectId(args["t"])}, {"$inc": {"numReplies": 1}}, upsert=False, multi=False)
	colForums.update({"_id": thread["forum"]}, {"$inc": {"numPosts": 1}}, upsert=False, multi=False)

	# Get and increase bump number for forum, update bump number for thread
	colForums.update({"_id": thread["forum"]}, {"$inc": {"bump": 1}}, upsert=False, multi=False)
	forum = colForums.find_one({"_id": thread["forum"]})
	colThreads.update({"_id": ObjectId(args["t"])}, {"$set": {"bumpNum": forum["bump"]}}, upsert=False, multi=False)

	# Update last posts in forum and thread
	colForums.update({"_id": thread["forum"]}, {"$set": {"lastPost": post_id}}, upsert=False, multi=False)
	colThreads.update({"_id": ObjectId(args["t"])}, {"$set": {"lastPost": post_id}}, upsert=False, multi=False)

	return page
Example #7
0
def post(s, form, args):
	page = "/posting?f={}".format(args["f"])

	# Make sure values entered are alright
	from functions import checkFieldsBlank
	fields = ["subject", "message"]
	if checkFieldsBlank(form, fields):
		return page

	# Import needed functions
	from functions import checkLogin
	import time
	import datetime

	# Redirect if not logged in
	if not checkLogin(s.headers):
		return "/login"

	from functions import getUsername
	from functions import getUserId

	# Connect to Mongo DB
	client = MongoClient("mongodb://localhost:27017/")
	db = client.db

	# Get Collections
	colForums = db.forums
	colThreads = db.threads
	colPosts = db.posts

	# Get username
	username = getUsername(s.headers)
	userId = getUserId(username)

	# Get and increase bump number for forum
	colForums.update({"_id": ObjectId(args["f"])}, {"$inc": {"bump": 1}}, upsert=False, multi=False)
	forum = colForums.find_one({"_id": ObjectId(args["f"])})
	bump = forum["bump"]

	# Insert thread into database
	thread = {"forum": ObjectId(args["f"]),
			  "title": form["subject"].value,
			  "author": userId,
			  "numReplies": 0,
			  "numViews": 0,
			  "bumpNum": bump}

	thread_id = colThreads.insert(thread)

	# Insert first post into database
	post = {"thread": thread_id,
			"author": userId,
			"content": formatPost(form["message"].value),
			"time": time.time()}

	post_id = colPosts.insert(post)

	# Update threads and posts counts
	colForums.update({"_id": ObjectId(args["f"])}, {"$inc": {"numPosts": 1}}, upsert=False, multi=False)
	colForums.update({"_id": ObjectId(args["f"])}, {"$inc": {"numThreads": 1}}, upsert=False, multi=False)

	# Update last posts in forum and thread
	colForums.update({"_id": ObjectId(args["f"])}, {"$set": {"lastPost": post_id}}, upsert=False, multi=False)
	colThreads.update({"_id": thread_id}, {"$set": {"lastPost": post_id}}, upsert=False, multi=False)

	return "/viewthread?t={}".format(thread_id)