Не удалось исключить пользователя ошибка вк user not found in chat 935

На чтение 11 мин Просмотров 3.9к.

Содержание

  1. Возвращаемся в беседу своими силами
  2. Как в Вк вернуться в беседу, если тебя исключили?
  3. Что делать, если беседа удалена
  4. Входим по специальной ссылке
  5. Совет на будущее
  6. Как вернуться в беседу ВК
  7. Способ 1. Поиск названия
  8. Способ 2. Написать сообщение в беседе
  9. Как найти удаленную беседу
  10. Как вернуться в беседу, если исключили
  11. Как восстановить удаленную беседу
  12. Первый способ — восстановление удаленных сообщений в беседе
  13. Второй способ — написать в службу поддержки ВК
  14. Третий способ — попросить собеседника переслать сообщения
  15. Как вернуться в беседу в ВК?
  16. Как вернуться в удаленную беседу в ВК?
  17. Как вернуться в беседу, если диалог удален и не удаётся найти ссылку?

Часто бывают ситуации, когда тебя приглашают в непонятную беседу Вконтакте и ты сразу же из неё удаляешься либо делаешь всё, чтобы тебя из неё исключили. Но потом любопытство берёт верх, но уже, как говорится, поезд ушёл.

Как в Вк вернуться в беседу, если тебя исключили? Об этом мы с вами сегодня и поговорим.

Возвращаемся в беседу своими силами

Содержание статьи (навигация)

В том случае, если Вы самостоятельно покинули беседу с другими пользователями, то стоит найти диалог во вкладке «Мои сообщения» и кликнуть на кнопку «Действия», а затем «Вернуться в беседу». Пишете новое сообщение. Всё. Теперь Вы вновь активный участник всех событий.

Как в Вк вернуться в беседу, если тебя исключили?

Если же Вы чем-то довели создателя, и он Вас исключил, то стоит просто написать одному из участников сообщение, чтобы он Вас вернул назад. И Вы снова можете общаться в прежнем режиме. В том случае, если «зал» будет переполнен, войти в него Вы не сможете, пока кто-то из участников не выйдет. Лимит пользователей на одну беседу составляет 500 человек.

Стоит отметить, что при возвращении в общий диалог Вы не останетесь незамеченным. Имя и фамилия сразу же высветится, как только Вы будете возвращены одним из участников.

Что делать, если беседа удалена

Бывает и такое, что психанув, Вы решили удалить беседу, но предварительно самостоятельно из неё вышли. Возможно, Вас задели слова одного из участников беседы, либо она Вам наскучила или заметили грозный взгляд начальника на работе при переписке. Всё поправимо.

и перед Вашими глазами появятся все беседы, в которых Вы недавно принимали участие. Затем, выбираем необходимую и вновь в неё «забегаем».

При удалении переписки исчезают все файлы и сообщения, которые были отправлены ранее. Соответственно, беседа именно для Вас начнется с чистого листа. Но, если это были значимые для Вас документы и письма, то их даже возможно вернуть.

Входим по специальной ссылке

Как вернуться в беседу в Вк, если исключили? Как уже говорили выше, с помощью одного из участников чата. Но можно обойтись и без него. Достаточно запомнить или записать специальную ссылку.

С помощью неё перед Вашими глазами предстанет самая первая беседа и не важно, состоите Вы там или нет. Если сменить последнюю цифру ссылки на 2, то откроется второй чат. И так можете продолжать подбирать цифру, дойдя до нужной.

Стоит отметить, что цифра 10, вставленная в конце ссылке, сделает её неактивной. Это связано с тем, что после «=» должны идти всего десять цифр. Соответственно, если Вы хотите вписать цифру десять в конце ссылки, из неё следует удалить один ноль после 2.

Совет на будущее

Необходимо быть внимательным к каждому чату и переписке с особо важными документами. Чтобы предотвратить возможную потерю ценных файлов из Вконтакте, стоит во время беседы сохранять все документы и изображения на свой компьютер.

Чтобы не задаваться вопросом: «Удалили из беседы Вк, как вернуться?», лучше обзавестись дополнительной страницей и добавить её в чат. Это делается с целью, чтобы обезопасить себя при возникновении непредвиденных ситуаций, а именно:

  • Создатель Вас выгонит из беседы;
  • Чат будет случайно удален администратором;
  • Первая страница будет забанена.

Как видите, нет ничего страшного в том, что Вас удалили из беседы или Вы сами из неё вышли. Вернуть всё на круги своя не составляет особого труда даже новичку, который пользуется социальной сетью впервые или в особо редких случаях.

Общая беседа в ВК очень полезная вещь в ВК. Можно обсудить общие вопросы с несколькими людьми. Но что же делать, если случайно вышел из беседы или исключил создать? Можно ли вернуться? Если можно, то как? Давайте разбираться.

Как вернуться в беседу ВК

Способ 1. Поиск названия

Если Вы покинули беседу самостоятельно, то возвращаться тоже надо самому, но для начала – нужно её найти. Итак, в поисковой строке диалогов вводим название беседы. Можно вводить как новое название, так и старое, ВК помнит все названия беседы.

Поиск беседы ВК по названию

Возле логотипа есть три точки, кликаем и находим внизу контекстного меню «вернуться в беседу». Кликаем и нас возвращают в беседу.

Как вернуться в беседу в ВК

Если Вы все сделали правильно, то должно быть написано, что Вы вернулись в беседу.

Сообщение «Вернулась в беседу» в ВК

Способ 2. Написать сообщение в беседе

Ещё один способ вернутся в беседу, это написать сообщение, и Вы автоматически вернетесь в беседу.

Написать сообщение, чтобы вернуться в беседу

Как найти удаленную беседу

Если по какой-то причине Вы удалили переписку беседы, а перед этим покинули её, то Вам необходимо перейти вот по этой ссылке — https://vk.cc/8T4OEo . Перейдя по данной ссылке, Вы увидите те беседы, где участвовали недавно. Выбираете интересующую Вас, проваливаемся в неё и также нажимаем на 3 точки возле логотипа беседы и повторяем действия написанные чуть выше. Примечательно: возвращаясь в беседу, Вы больше не увидите (если была очищена история беседы) ни единого вложения, опубликованного ранее.

Как вернуться в беседу, если исключили

Выше мы разобрали пример возвращения в беседу, если вышел самовольно из беседы. А что же делать с тем случаем, если исключили?

К сожалению, самостоятельно в такую беседу вернуться нельзя. В таком случае необходимо написать сообщение, что бы Вас пригласили в беседу. Обязательное условие, чтобы в беседе не было больше 50 человек – это лимит.

Сообщение создателю беседу

В свою очередь создатель беседы добавляет Вас в беседу, его окно выглядит так

Так выглядит окно создателя беседы при добавлении нового участника

После добавления участника, Вы должны вернуться обратно в беседу

Создатель беседы пригласил нового участника

Как восстановить удаленную беседу

Как восстановить удаленную беседу? Такой вопрос нередко возникает у пользователей ВК. Способов не так много, но они все-таки есть.

Первый способ — восстановление удаленных сообщений в беседе

Если вы удалили сообщения в беседе, то их можно сразу же восстановить, нажав одноименную кнопку.

Восстановление удаленных сообщений в беседе ВК

После нажатия данной кнопки, сообщения должны восстановиться

Восстановленные сообщения в беседе в ВК

Второй способ — написать в службу поддержки ВК

Этот способ практически не рабочий, стоит пробовать, когда очень нужно восстановить переписку. Восстанавливает поддержка сообщения, довольно таки редко, но исключения есть.
На своей главной странице находим кнопку «Помощь»

Пункт Помощь в меню в ВК

Вводим в поисковой строке «Восстановить удаленные сообщения»

Восстановить удаленные сообщения в ВК

Нас ВК уведомляет, что восстановить не удаться и так же предупреждает, что установка программ и расширений может навредить целости Ваших данных. Обратите на это внимание, установка вспомогательных программ для восстановления сообщений может обернуться для Вас кражей паролей.

Уведомление ВК о невозможности восстановить удаленные сообщения

Третий способ — попросить собеседника переслать сообщения

Третий вариант самый оптимальный – попросить одного из собеседника беседы просто переслать сообщения (это сработает, если собеседник тоже не почистил историю переписки). Сейчас в ВК можно пересылать до 100 сообщений за один раз.

Как вернуться в беседу? Этим вопросом задаются многие активные пользователи социальной сети ВК, так как по разным причинам покинули диалог. В общем ВК и существует по большей части благодаря общению, где одну из первостепенных ролей занимает именно чат. Диалоги весьма полезны, но ограничены в функционале, их использовать очень неудобно, когда необходимо донести информацию до многих людей.

Весьма часто, по некоторым причинам, пользователи покидают чаты, в основном из-за того, что кто-то пригласил человека, которого вы не хотите видеть. Возможно, информационный интерес к диалогу просто иссяк и беседа потеряла смысл. Даже в шутку нередко пользователи покидают чаты, чтобы показаться обиженными. Как раз потом и возникают вопросы, как вернуться в беседу ВК, если вышел, сегодня мы опишем все возможные ситуации.

Как вернуться в беседу в ВК?

Самый простой вариант развития событий как вернуться в беседу в ВК – это простое восстановление, но как вернуться в удаленную беседу? Здесь уже нужно обладать некоторыми специфическими знаниями.

Чтобы вернуться в беседу, с которой вы предварительно вышли, неважно по какой причине, достаточно выполнить несколько шагов, они подобны выходу из чата:

  1. Войдите в ВК и перейдите в категорию «Сообщения»;

  1. Найдите беседу, в которую желаете вернуться и перейдите в неё. Для удобства можете воспользоваться поиском;

  1. Чтобы вернуться в покинутую беседу достаточно навести курсор на троеточие сверху окна;
  2. Выберите пункт «Вернуться в беседу».

Теперь мы узнали, как вернуться в беседу, если покинул ее, но только в том случае, если пользователь самостоятельно вышел из группы и диалог не был удален. Никакого ограничения на количество выходов и восстановлений в конференции не существует, поэтому процедуру можно выполнять множество раз.

Альтернативный вариант возврата в беседу – это просто написать сообщение. ВК автоматически восстановит вас в конференции и для этого не требуются дополнительные действия.

Когда причина выхода из беседы становится изгнание, то возможности восстановиться самостоятельно нет, необходимо, чтобы кто-то из участников пригласил вас снова.

Как вернуться в удаленную беседу в ВК?

Следующая актуальная задача, как вернуться в беседу ВК, если удалил диалог. Здесь всё несколько сложнее, просто найти в разделе «Сообщения» нужную группу не получится, по понятным причинам. На самом же деле, сама информация полностью не удалена, она просто скрыта от вида пользователя. То есть перейдя по ссылке на беседу её всё ещё можно найти.

Перед тем, как вернуться в беседу, если удалил диалог, нужно постараться найти ссылку на группу. Вероятно, вы где-то сохраняли ссылку или она хранится в истории браузера. В большинстве обозревателей перейти в историю можно нажав Ctrl + H, затем найдя элемент можно вернуться в группу.

Когда ссылка была найдена, достаточно перейти по ней. Затем действия не отличаются от предыдущего варианта, нужно просто во вкладке «Действие», которое отображается в виде троеточия, выбрать элемент «Вернуться в беседу». Стоит отметить, о вашем уходе и возвращении будут знать все участники группы, так как показывается соответствующее сообщение.

Если не удалось найти необходимый адрес беседы, то в следующем пункте мы рассмотрим и такой вариант развития событий.

Как вернуться в беседу, если диалог удален и не удаётся найти ссылку?

Наконец разберёмся, как вернуться в покинутую и удаленную беседу без помощи сторонних средств. На самом деле у каждой беседы есть свой идентификатор, который присваивается индивидуально. То есть введя цифру, которая является номером группы, вы перейдете в беседу.

Номера работают по принципу инкремента, то есть каждая новая беседа на единицу больше, с учетом уже скрытых от видимости групп. Чтобы получить доступ к покинутой конференции достаточно перейти по ссылке https://vk.com/im?sel=c1, здесь конечная цифра является идентификатором.

Можно просто проверять по очереди каждый чат, в который вы были приглашены в поисках нужного, но это долгий процесс. Чтобы ускорить поиск можно пойти двумя путями либо создать новую группу и посмотреть её номер, а затем в обратном порядке найти необходимую, либо сразу вывести много бесед.

Первый способ актуален, если из беседы вышли недавно и её реально отыскать буквально за несколько переборов чисел в адресе. Второй вариант – это ввести ссылку, которая сформирует группу бесед, просто добавляя новые через нижнее подчеркивание в строке https://vk.com/im?sel=c1_c2_c5_c10 и т.д. Конечно, если ваша страница старая, то конференций за всё время может быть много, тогда процесс станет трудоёмким.

Вышел из беседы, как вернуться очевидно — воспользоваться одним из предложенных способов поиска идентификатора, если конференция была удалена. Если диалог даже не скрыт, то возвращение в беседу вовсе не займет много времени. Единственный нюанс в том, когда вас выгоняют, восстановиться самостоятельно нельзя.

Если у Вас остались вопросы по теме «Как вернуться в беседу в ВК, если диалог удален?», то можете задать их в комментариях

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.

Already on GitHub?
Sign in
to your account

Assignees

@inyutin-maxim

Labels

Задача

Задача требующая реализации нового или доработке существующего функционала

соответственно надо как то отсеивать тех кто вышел с определённого чата, я делаю это с помощью getChatMember
Так вот, я так понимаю если пользователь ниразу не заходил в чат или вышел из него то бот вернёт 400 Bad Request: user not found
Дело в том что на некоторых пользователей которые присутствуют в чате — бот возвращает 400 Bad Request: user not found, хотя пользователь находится в чате, который ищется и через поиск и по инфе отображается общая группа
Бот не админ в чате
На примере других пользователях бот-неадмин норм возвращает запрос — на тех которые присутствуют в чате он не возвращает ошибки и в консоле показывает что всё хорошо, на других пользователях показывается что пользователь вышел
Думал что если пользователь добавил чат в архив — то в таком случае возвращало 400 Bad Request: user not found

Попробовал на примере — добавил чат в архив, протестировал командой — возвратило то что пользователь находится в чате
Собственно это ошибка на уровне телеграм?

russian

programming

it

ai

bot-development

03:53 06.08.2021


12

ответов

Дополню: пользователь вышел с чата, проверяю данного пользователя — является ли он участником группы — возвращается успех
Странно как то работает этот метод….

Код собственно:
bot.getChatMember(ИДчата, ИДюзера).then(function(value)
{
console.log(«успешно»)
},
function(reason)
{
console.log(«ошибка: » + JSON.stringify(reason));
});

04:09 06.08.2021


Зомби Engineer🧟‍♂️🇷🇸

value законсоль попробуй

попробовал
чел в группе — получаю успешно — {«user»:{«id»:блабла,»is_bot»:false,»first_name»:»блабла»,»last_name»:»блабла + *»,»username»:»блабла»,»language_code»:»ru»},»status»:»member»}
чел вышел с группы — получаю успешно — {«user»:{«id»:блабла,»is_bot»:false,»first_name»:»блабла»,»last_name»:»блабла + *»,»username»:»блабла»,»language_code»:»ru»},»status»:»left»}

А если показывает 400 Bad Request: user not found, при этом чел в группе

05:50 06.08.2021


Зомби Engineer🧟‍♂️🇷🇸

Status смотри

так я при проверке такого чела получаю reason
а reason говорит только 400 Bad Request: user not found

а status я могу получить только через value

05:54 06.08.2021


Поли Робокар + *

так я при проверке такого чела получаю reason
а re…

Так через велью и получай. Если статус лефт то вышел

05:55 06.08.2021


Зомби Engineer🧟‍♂️🇷🇸

Так через велью и получай. Если статус лефт то выш…

а я не получаю велью, я получаю ресон, т.е. ошибка

05:55 06.08.2021


Поли Робокар + *

а я не получаю велью, я получаю ресон, т.е. ошибка

То есть переодически ошибка а не всегда?

05:57 06.08.2021


Зомби Engineer🧟‍♂️🇷🇸

То есть переодически ошибка а не всегда?

на некоторых пользователях ошибка
чел в группе, даже писал в ней дней 10 назад, при просмотре инфо чела — видно нужную группу в общих чатах
при проверке чела в этой группе через getChatMember то я получаю 400 Bad Request: user not found

05:59 06.08.2021


Зомби Engineer🧟‍♂️🇷🇸

То есть переодически ошибка а не всегда?

вроде разобрался — причина была: устаревший клиент до обновы апи последней версии)
у пользователей у которых такой клиент выбивает ошибку эту

06:15 06.08.2021

Если ты прям уверен и хочешь ахуеть от жизни, можешь написать разрабу бот апи в @tdlibchat

08:19 06.08.2021

Пишет, что такого пользователя нет. Хотя мои данные не скрыты и я подписан на канал

@dp.callback_query_handler(lambda c: c.data=="check")
async def check(callback_query: types.CallbackQuery):
    user_channel_status = await bot.get_chat_member(chat_id="@jolybells", user_id=callback_query.message.chat.id)
    print(callback_query.message.from_id)


  • Вопрос задан

    06 янв.

  • 295 просмотров

Пригласить эксперта

Попробуй использовать именно ID чата. Он имеет числовой формат. Получить свой идентификатор можно например с помощью бота: https://t.me/myidbot

Попробуй используя ID чата
Зайди в бота https://t.me/username_to_id_bot
Отправь туда юзернейм чата (@jolybells)
Скопируй полученный ID чата

63b98a3bc394d324662244.png

И заменить юзернейм на ID Чата (str)

Вот код с ID Чатом

@dp.callback_query_handler(lambda c: c.data=="check")
async def check(callback_query: types.CallbackQuery):
    user_channel_status = await bot.get_chat_member(chat_id="-1001158535533", user_id=callback_query.message.chat.id)
    print(callback_query.message.from_id)


  • Показать ещё
    Загружается…

23 июн. 2023, в 23:15

30000 руб./за проект

23 июн. 2023, в 23:10

15000 руб./за проект

23 июн. 2023, в 21:51

25000 руб./за проект

Минуточку внимания

from utils import * from module import * import threading import os from vk_api.keyboard import VkKeyboard, VkKeyboardColor from functools import wraps from pprint import pprint from vk_api.bot_longpoll import CHAT_START_ID from gtts.tts import gTTS from random import choice import speech_recognition as sr from pydub import AudioSegment from pprint import pprint import json import datetime from functools import wraps keyboard_help = VkKeyboard() keyboard_help.add_button(«Помощь по командам», VkKeyboardColor.PRIMARY, payload=‘»/help»‘) keyboard_help.add_line() keyboard_help.add_button(«Скрыть клавиатуру», VkKeyboardColor.DEFAULT, payload=‘»/clavs»‘) default_keyboard = VkKeyboard() default_keyboard.add_button(«Получить должности», VkKeyboardColor.PRIMARY, payload=‘»/getadmin»‘) default_keyboard.add_button(«Информация», VkKeyboardColor.NEGATIVE, payload=‘»/info»‘) default_keyboard.add_button(«Своя должность», VkKeyboardColor.PRIMARY, payload=‘»/stat»‘) default_keyboard.add_line() default_keyboard.add_button(«Список администраторов», VkKeyboardColor.POSITIVE, payload=‘»/admins»‘) default_keyboard.add_button(«ID беседы», VkKeyboardColor.POSITIVE, payload=‘»/chatid»‘) default_keyboard.add_line() default_keyboard.add_vkapps_button(6973826, groupid, «Открыть сервис», «») default_keyboard.add_line() default_keyboard.add_button(«Скрыть клавиатуру», VkKeyboardColor.DEFAULT, payload=‘»/clavs»‘) def check_group_verify_permission(f): @wraps(f) def wrap(chat_id, *args, **kwargs): if db.get_chat_group_check(chat_id): return f(chat_id=chat_id, *args, **kwargs) else: sendmessage_chat(chat_id, «Увы, но у Вас не включена проверка по группе. Чтобы воспользоваться командами белого списка, Вам нужно включить ограничение с помощью команды n/enable_check_group @club(Ваш id группы без скобок. Например: @club1) или @(краткое название группы. Например: @testpool)») wrap.arguments = f.__code__.co_varnames[:f.__code__.co_argcount] return wrap «»»@enable_command_with_permission(5) def test(chat_id, **kwargs): sendmessage_chat(chat_id, f»{str(db.get_params(chat_id)[‘warns’])}»)»»» @enable_command_with_permission(5) def params(chat_id, args, text_args, **kwargs): if not (text_args[0].lower() == «kick» or text_args[0].lower() == «ban»): return sendmessage_chat(chat_id, «Укажите в кавычках ‘kick’ или ‘ban'») if int(args[0]) != 1: return sendmessage_chat(chat_id, «Пока можно настраивать только 1 пункт (что делать при достижении макс. кол-ва предупреждений») db.set_params(chat_id, {«warns»: text_args}) sendmessage_chat(chat_id, f»Теперь при достижении максимального количества, будет {‘исключать из беседы’ if text_args[0] == ‘kick’ else ‘блокировать в беседе’} «) @enable_command_with_permission(4) def deladmins(chat_id, user_ids, **kwargs): for i in user_ids: if db.get_level_admin(i) == 5: return sendmessage_chat(chat_id, «Не пытайся снять разработчика, напиши Ване, если что-то серьезное») admins = db.get_admins_all(i) for admin in admins.dicts(): db.remove_admin(admin.get(‘chat_id’), i) sendmessage_chat(chat_id, f»Пользователь снят с должностей в беседах») @enable_command_with_permission(5) @enable_for_helper def unadm(chat_id, user_ids, **kwargs): for i in user_ids: r = db.add_admin_helper(chat_id, i) if not r: return sendmessage_chat(chat_id, «У пользователя не стоит запрет.») else: sendmessage_chat(chat_id, «Пользователю был снят запрет.») @enable_command_with_permission(3) def settitle(chat_id, args, **kwargs): try: args = int(args[0]) except: return sendmessage_chat(chat_id, «Укажите уровень цифрой») if args < 0 or args > 5: return sendmessage_chat(chat_id, «Уровень может быть от 0 до 5») db.set_settile(chat_id, args) sendmessage_chat(chat_id, f»Вы установили доступ к смене названия беседы с {str(args)} уровня») @enable_command_with_permission(3) def inviteuser(chat_id, args, **kwargs): try: args = int(args[0]) except: return sendmessage_chat(chat_id, «Укажите уровень цифрой») if args < 0 or args > 5: return sendmessage_chat(chat_id, «Уровень может быть от 0 до 5») db.set_inviteuser(chat_id, args) sendmessage_chat(chat_id, f»Вы установили доступ к приглашению пользователей с {str(args)} уровня») @enable_command_with_permission(4) @enable_for_helper def addrep(from_id, chat_id, args, **kwargs): for arg in args: if not db.check_report(arg): return sendmessage_chat(chat_id, «Репорта с данным ID не существует») if db.check_report(arg).otext != «»: return sendmessage_chat(chat_id, «Репорт уже был отвечен ранее») db.update_reports(arg, «otext», «-«) db.update_reports(arg, «otime», get_time()) db.update_reports(arg, «helper», from_id) sendmessage_chat(chat_id, f»Репорт #{arg} помечен отвеченным») @enable_command_with_permission(4) @enable_for_helper def delreport(chat_id, args, from_id, **kwargs): if not db.check_report(args[0]): return sendmessage_chat(chat_id, «Репорта с данным ID не существует») try: sendmessage(db.check_report(args[0]).user_id, {get_role(from_id)} удалил Ваш вопрос #{args[0]}«) except: try: sendmessage_chat(db.check_report(args[0]).chat_id, {get_ref(db.check_report(args[0]).user_id)}, {get_role(from_id)} удалил Ваш вопрос #{args[0]}«) except: … sendmessage_chat(chat_id, f»Репорт #{args[0]} успешно удален») db.del_report(args[0]) @enable_command_with_permission(4) def say(user_ids, chat_id, text_args, **kwargs): for i in user_ids: try: db.add_notification(i, «admin_message», {«text»: text_args[0], «actions»: []}) sendmessage_chat(chat_id, «Сообщение отправлено.») except: sendmessage_chat(chat_id, «Не удалось отправить сообщение. Пользователь не в приложении.») @enable_command_with_permission(2) def translation(chat_id, **kwargs): if db.get_golos(chat_id): db.update_golos(chat_id, False) sendmessage_chat(chat_id, «Вы отключили перевод голосовых сообщений в текст») elif not db.get_golos(chat_id): db.update_golos(chat_id, True) sendmessage_chat(chat_id, «Вы включили перевод голосовых сообщений в текст») @enable_command_with_permission(3) def clear(chat_id, from_id, **kwrags): text = «» from_id_level = db.get_level_admin(chat_id, from_id) lvl = get_name_adm(chat_id, from_id_level) for _ in range(0,500): text += « n« sendmessage_chat(chat_id, {text}n{lvl} {get_ref(from_id)} очистил чат.») @enable_command_with_permission(4) @enable_for_helper def msg_to(args, from_id, text_args, chat_id, **kwargs): l = [] for attach in kwargs[«attachments»]: if attach[«type»] == «photo»: l.append(get_attachment_photo(attach[«photo»])) try: n = int(args[1]) except: n = 1 form = get_role(from_id) params = dict( chat_id=int(args[0]), message=f»К Вам обращается {form} с текстом: {text_args[0]}«, attachment=«,».join(l), random_id=0 ) for i in range(math.ceil(n/10)): vk_send_multiple_messages(params, min(ni*10, 10)) sendmessage_chat(chat_id, f»Сообщение успешно отправлено») @enable_command def online(chat_id, **kwargs): member_ids = list(filter(lambda x: x > 0, vk_get_chat_members(chat_id))) users = list(filter(lambda x: «last_seen» in x, vk.users.get(user_ids=member_ids, fields=«online,last_seen,sex»))) users_online = list(filter(lambda x: x[«online»], users)) users = list(filter(lambda x: x not in users_online, users)) l = [] def get_smile(i): tmp = «» if «platform» in i[«last_seen»]: tmp = vk_platforms[i[«last_seen»][«platform»]] else: tmp = «(None)» if «online_app» in i: app = vk_s.apps.get(app_id=i[«online_app»])[‘items’][0] if app[‘title’] not in [«iPhone», «Android»]: tmp += f» (Приложение {app[‘title’]} print(«Приложение», i[«online_app»]) pprint(app) return tmp for i in users_online: smile = get_smile(i) l.append({i[‘first_name’]} {i[‘last_name’]} — Онлайн {smile}«) current_datetime = datetime.datetime.now() for i in users: i[«last_seen»][«time»] = current_datetime datetime.datetime.fromtimestamp(i[«last_seen»][«time»]) for i in sorted(users, key=lambda x: x[‘last_seen’][‘time’]): smile = get_smile(i) l.append({i[‘first_name’]} {i[‘last_name’]} — был{sex_str[i[‘sex’]]} в сети {get_format_time(i[‘last_seen’][‘time’])} назад {smile}«) for i in group_words(l, «», delimiter=«n«): sendmessage_chat(chat_id, i) @enable_command_with_permission(3) def enable_check_group(chat_id, group_ids, **kwargs): a = int(group_ids[0]) if a > 1<<31 1: sendmessage_chat(chat_id, f»Вы вышли за границы допустимых id групп. Максимальный id {1<<31 1}«) return g = get_ref(a) whitelist = db.get_whitelist(chat_id) for i in vk_get_chat_members(chat_id): if whitelist: if i in whitelist: continue if (i < 0) or (i in devspeclist): continue try: if not vk.groups.isMember(user_id=i, group_id=a): if vk_member_can_kick(chat_id, i): r = get_ref(i) sendmessage_chat(chat_id, {r} не находится в группе {g}«) vk.messages.removeChatUser(chat_id=chat_id, user_id=i) else: r = get_ref(i, «gen») sendmessage_chat(chat_id, f»Не удается кикнуть {r}, он не находится в группе {g}«) except Exception as e: if str(e) == «[15] Access denied: no access to this group»: sendmessage_chat(chat_id, f»Нет доступа для группы {g}«) return db.set_chat_group_check(chat_id, a) sendmessage_chat(chat_id, f»Вы установили для чата доступ исключительно для участников группы {g}«) @enable_command_with_permission(3) def disable_check_group(chat_id, **kwargs): if db.get_chat_group_check(chat_id): db.set_chat_group_check(chat_id, 0) sendmessage_chat(chat_id, «Вы отключили ограничение доступа вступления в беседу») else: sendmessage_chat(chat_id, «Ограничение вступления в беседу не включено») @enable_command_with_permission(4) def exit_chat(chat_id, args, from_id, **kwargs): exit_bot_chat(int(args[0])) sendmessage_chat(chat_id, «Успешно вышел из чата») @enable_command_with_permission(4) @enable_for_helper def ckick(args, chat_id, from_id, user_ids, text_args, **kwargs): try: chat_id = int(args[0]) except: sendmessage_chat(chat_id, «Требуется числовой id чата») return form = get_role(from_id) for i in user_ids: r = get_ref(i) if db.get_level_admin(chat_id, i) not in [0, 1, 2, 3]: sendmessage_chat(2, «Вы не имеете права кикать спецадминистраторов или разработчиков») continue if not vk_member_exists(chat_id, int(i)): sendmessage_chat(2, {r} не существует в конференции под id {chat_id}«) continue if not vk_member_can_kick(chat_id, i): sendmessage_chat(2, {r} нельзя кикнуть, т.к. он является администратором конференции») continue sendmessage_chat(2, {form} ({get_ref(from_id)}) исключил из беседы {r} (ID: {chat_id}). Комментарий: {text_args[0]}«) sendmessage_chat(chat_id, {r}, {form} исключил Вас из беседы. Комментарий: {text_args[0]}«) vk.messages.removeChatUser(chat_id=chat_id, member_id=i) @enable_command_with_permission(4) @enable_for_helper def cban(args, chat_id, from_id, user_ids, text_args, **kwargs): try: chat_id = int(args[0]) except: sendmessage_chat(chat_id, «Требуется числовой id чата») return form = get_role(from_id) for i in user_ids: r = get_ref(i) if db.check_ban(chat_id, i): sendmessage_chat(2, {r} уже заблокирован в данной конференции») continue if db.get_level_admin(chat_id, i) not in [0, 1, 2, 3]: sendmessage_chat(2, «Вы не имеете права кикать спецадминистраторов или разработчиков») continue if not vk_member_exists(chat_id, int(i)): sendmessage_chat(2, {r} не существует в конференции под id {chat_id}«) continue if not vk_member_can_kick(chat_id, i): sendmessage_chat(2, {r} нельзя кикнуть, т.к. он является администратором конференции») continue sendmessage_chat(2, {form} ({get_ref(from_id)}) заблокировал из беседы {r} (ID: {chat_id}). Комментарий: {text_args[0]}«) sendmessage_chat(chat_id, {r}, {form} заблокировал Вас из беседы. Комментарий: {text_args[0]}«) vk.messages.removeChatUser(chat_id=chat_id, member_id=i) db.add_ban(chat_id, i) @enable_command_with_permission(4) @enable_for_helper def caddadmin(args, chat_id, from_id, user_ids, **kwargs): try: chat_id = int(args[0]) except: sendmessage_chat(chat_id, «Требуется числовой id чата») return try: level = int(args[1]) except: sendmessage_chat(2, «Требуется указать уровень (вторым числом).») return form = get_role(from_id) for i in user_ids: r = get_ref(i, «acc») if level >= 4 or level < 0: sendmessage_chat(2, «Укажите уровень (0-3).») return if db.get_level_admin(chat_id, i) not in [0, 1, 2, 3]: sendmessage_chat(2, «Вы не имеете права редактировать должности спецадминистраторов и разработчиков») continue if not vk_member_exists(chat_id, int(i)): sendmessage_chat(2, {r} не существует в конференции под id {chat_id}«) continue if level == 0: from_id_level = db.get_level_admin(chat_id, i) sendmessage_chat(chat_id, {form} снял {r} с должности {lvl_name[from_id_level]}«) sendmessage_chat(2, {form} ({get_ref(from_id)}) снял {r} с должности {lvl_name[from_id_level]} ({from_id_level} уровень) (ID: {chat_id}) db.remove_admin_helper(chat_id, i) return sendmessage_chat(2, {form} ({get_ref(from_id)}) назначил {r} на должность {lvl_name[level]} ({level} уровень) (ID: {chat_id}) if db.add_admin(chat_id, i, level): sendmessage_chat(chat_id, {form} назначил {r} на должность {lvl_name[level]} ({level} уровень)») else: db.remove_admin(chat_id, i) db.add_admin(chat_id, i, level) sendmessage_chat(chat_id, {form} назначил {r} на должность {lvl_name[level]} ({level} уровень)») @enable_command_with_permission(4) @enable_for_helper def cwarn(args, chat_id, from_id, user_ids, text_args, **kwargs): try: chat_id = int(args[0]) except: sendmessage_chat(chat_id, «Требуется числовой id чата») return form = get_role(from_id) for i in user_ids: r = get_ref(i) if db.get_level_admin(chat_id, i) not in [0, 1, 2, 3]: sendmessage_chat(2, «Вы не имеете права выдавать предупреждения спецадминистраторам или разработчикам») continue if not vk_member_exists(chat_id, int(i)): sendmessage_chat(2, {r} не существует в конференции под id {chat_id}«) continue sendmessage_chat(2, {form} ({get_ref(from_id)}) выдал предупреждение {r} (ID: {chat_id}). Комментарий: {text_args[0]}«) sendmessage_chat(chat_id, {r}, {form} выдал Вам предупреждение. Комментарий: {text_args[0]}«) @enable_command_with_permission(2) def blist(chat_id, **kwargs): r = Ban_List.select().where(Ban_List.chat_id == chat_id) if len(r) > 0: l = «n«.join([get_ref(i.user_id) for i in r]) sendmessage_chat(chat_id, f»В списке заблокированных находятся:nn{l}«) else: sendmessage_chat(chat_id, «Нет заблокированных пользователей в Вашей конференции») def check_warn_permission(f): @wraps(f) def wrap(chat_id, *args, **kwargs): if db.get_warn_enabled(chat_id): f(chat_id, warn_max=db.get_warn_max(chat_id), *args, **kwargs) else: sendmessage_chat(chat_id, «В данном чате отключена возможность использования команд для предупреждения. Если она понадобится, то попросите создателя настроить бота через /warn_switch и /warn_kick_set (количество предупреждений для кика)») wrap.arguments = f.__code__.co_varnames[:f.__code__.co_argcount] return wrap @enable_command_with_permission(3) @check_group_verify_permission def addwhite(chat_id, user_ids, **kwargs): for i in user_ids: if int(i) in devspeclist: continue r = get_ref(i) if db.add_whitelist(chat_id, int(i)): sendmessage_chat(chat_id, {r} добавлен в белый список») else: sendmessage_chat(chat_id, {r} уже существует в белом списке») @enable_command_with_permission(3) @check_group_verify_permission def delwhite(chat_id, user_ids, **kwargs): a = db.get_chat_group_check(chat_id) g = get_ref(a) for i in user_ids: r = get_ref(i) if db.remove_whitelist(chat_id, int(i)): sendmessage_chat(chat_id, {r} удален из белого списка») if vk_member_exists(chat_id, i): if not vk.groups.isMember(user_id=i, group_id=a): if vk_member_can_kick(chat_id, i): r = get_ref(i) sendmessage_chat(chat_id, {r} не находится в группе {g}«) vk.messages.removeChatUser(chat_id=chat_id, user_id=i) else: r = get_ref(i, «gen») sendmessage_chat(chat_id, f»Не удается кикнуть {r}, но он не находится в группе {g}«) else: sendmessage_chat(chat_id, {r} не существует в белом списке») @enable_command_with_permission(1) @check_warn_permission def warn(chat_id, user_ids, from_id, **kwargs): warn_max = kwargs[«warn_max»] for i in user_ids: x = get_ref(i, «gen») if not vk_member_exists(chat_id, int(i)): sendmessage_chat(chat_id, {x} нет в конференции») continue if str(i).startswith(«-«): sendmessage_chat(chat_id, «Предупреждения не предусмотрены для сообществ!») continue if check_delta_permission(from_id, i, chat_id) <= 0: sendmessage_chat(chat_id, «Вы не имеете право выдать предупреждение выше или равному вам уровню администрации») continue w = db.add_warn(chat_id, i) if w: sendmessage_chat(chat_id, {get_ref(i)} получил предупреждение [{w.count}/{warn_max}) else: try: vk.messages.removeChatUser(chat_id=chat_id, member_id=i) r = db.get_params(chat_id) if r[‘warns’][0] == ‘kick’: sendmessage_chat(chat_id, {get_ref(i)} исключен за превышение количества предупреждений.») elif r[‘warns’][0] == ‘ban’: sendmessage_chat(chat_id, {get_ref(i)} заблокирован за превышение количества предупреждений.») db.remove_admin(chat_id, i) db.add_ban(chat_id, i) except Exception as e: if str(e) == «[15] Access denied: can’t remove this user»: sendmessage_chat(chat_id, {x} не удалось заблокировать, вероятнее всего он администратор.») else: raise e continue @enable_command_with_permission(1) @check_warn_permission def unwarn(chat_id, user_ids, from_id, **kwargs): warn_max = kwargs[«warn_max»] for i in user_ids: if str(i).startswith(«-«): sendmessage_chat(chat_id, «Предупреждения не предусмотрены для сообществ!») continue if check_delta_permission(from_id, i, chat_id) <= 0: sendmessage_chat(chat_id, «Вы не имеете право снять предупреждение выше или равному вам уровню администрации») continue w = db.sub_warn(chat_id, i) if w: sendmessage_chat(chat_id, f»@id{i} (Пользователю) снято предупреждение {w.count}/{warn_max}«) else: sendmessage_chat(chat_id, «У данного пользователя нет предупреждений») @enable_command_with_permission(3) def warn_kick_set(chat_id, args, **kwargs): try: try: count = int(args[0]) except: sendmessage_chat(chat_id, «Пожалуйста, перепроверьте аргумент. Он должен быть только числовым!») return if not (0<count<(1 << 31)): sendmessage_chat(chat_id, f»Лимит предупреждений должен быть в интервале [1 ; {(1 << 31) 1}) return db.set_warn_max(chat_id, count) sendmessage_chat(chat_id,f»Вы установили лимит для предупреждений {count}«) l = [] for i in db.get_warns(chat_id): if i.count >= count: try: vk.messages.removeChatUser(chat_id=chat_id, member_id=i.user_id) i.count = 0 sendmessage_chat(chat_id, f»@id{i.user_id} (Пользователь) был исключен из беседы за превышение количества предупреждений!») except: … except Exception as e: sendmessage_chat(chat_id, f»Что-то здесь не так… Попробуйте обратиться с /report {e}«) @enable_command_with_permission(3) def warn_switch(chat_id, **kwargs): sendmessage_chat(chat_id,«Набор команд предупреждения были {}».format(«включены» if db.set_warn_enabled(chat_id) else «выключены»)) @enable_command_with_permission(1) def whitelist(chat_id, **kwargs): l = [] whitelist_l = db.get_whitelist(chat_id) if whitelist_l: for i in db.get_whitelist(chat_id): l.append({get_ref(i)}«) for i in group_words(l, «», delimiter=«n«): sendmessage_chat(chat_id, i) else: sendmessage_chat(chat_id, «Никто не находится в белом списке») @enable_command_with_permission(1) @check_warn_permission def get_warns(chat_id, **kwargs): warn_max = kwargs[«warn_max»] l = [] if db.get_warns(chat_id).count(): for i in db.get_warns(chat_id): l.append(f»@id{i.user_id} (Пользователь) имеет {i.count} предупреждений из {warn_max} максимальных») for i in group_words(l, «», delimiter=«n«): sendmessage_chat(chat_id, i) else: sendmessage_chat(chat_id, «Нет пользователей с предупреждениями») @enable_command def open(chat_id, **kwargs): sendmessage_chat(chat_id, «Клавиатура показана.», keyboard=default_keyboard.get_keyboard()) @enable_command def refer_switch(chat_id, from_id, **kwargs): r = db.switch_refer(chat_id, from_id) if r: sendmessage_chat(chat_id, «Вы включили возможность упоминания») else: sendmessage_chat(chat_id, «Вы отключили возможность упоминания») @enable_command def clavs(chat_id, **kwargs): sendmessage_chat(chat_id, «Клавиатура скрыта.», keyboard=default_keyboard.get_empty_keyboard()) @enable_command_with_permission(4) def setavatar(user_ids, text_args, chat_id, **kwargs): for i in user_ids: try: db.update_helpers(i, ‘avatar’, text_args[0]) sendmessage_chat(chat_id, ‘Аватар агента обновлен.’) except: sendmessage_chat(chat_id, ‘Пользователь не является агентом поддержки.’) @enable_command_with_permission(4) @enable_for_helper def helpers(chat_id, **kwargs): if chat_id != 2: return sendmessage_chat(chat_id, «Команда не уйдет дальше беседы агентов») text = «Список агентов поддержкиnn« for i in db.get_helpers(): x = users_get(i.user_id) if not x: return text += «@id{} ({} {})n«.format(str(x[«id»]), x[«first_name»], x[«last_name»]) sendmessage_chat(chat_id, text) @enable_command_with_permission(4) def del_service(chat_id, user_ids, **kwargs): for i in user_ids: try: db.del_service(i) sendmessage_chat(chat_id, «+») except: sendmessage_chat(chat_id, «-«) @enable_command def recognize(chat_id, **kwargs): os.chdir(tmp_dir) for i in kwargs[«attachments»]: if i[«type»] == «audio_message»: AUDIO_FILE = wget.download({i[‘audio_message’][‘link_mp3’]}«) src = AUDIO_FILE dst = AUDIO_FILE.split(«.»)[0] + «.wav» sound = AudioSegment.from_mp3(src) sound.export(dst, format=«wav») os.remove(src) AUDIO_FILE = dst break else: sendmessage_chat(chat_id, «Аудио сообщение не найдено.») return r = sr.Recognizer() with sr.AudioFile(AUDIO_FILE) as source: audio = r.record(source) # read the entire audio file os.remove(AUDIO_FILE) try: sendmessage_chat(chat_id, f»✉ {r.recognize_google(audio, language=‘ru-RU’)}«) except sr.UnknownValueError as e: sendmessage_chat(chat_id, «Мы не поняли что в данном сообщении») except sr.RequestError as e: raise e @enable_command_with_permission(5) def пиздец(peer_id, **kwargs): os.chdir(tmp_dir) count = 100 file = f»hello{threading.get_ident()}.mp3″ if kwargs[«args»]: count = int(kwargs[«args»][0]) en_alphavet = [chr(ord(«a») + i) for i in range(26)] text = «».join([choice(en_alphavet) for _ in range(count)]) gTTS(text).save(file) audio = uploader.audio_message(file, peer_id) message = audio[«audio_message»] vk.messages.send(peer_id=peer_id, message=«Вот вам необычное блюдо.», attachment=f»doc{message[‘owner_id’]}_{message[‘id’]}«, random_id=get_random_id()) os.remove(file) @enable_command def say_rus(peer_id, raw_text, **kwargs): os.chdir(tmp_dir) file = f»tmp{threading.get_ident()}.mp3″ gTTS(raw_text, lang=«ru»).save(file) audio = uploader.audio_message(file, peer_id) message = audio[«audio_message»] vk.messages.send(peer_id=peer_id, message=«Ваш озвученный текст», attachment=f»doc{message[‘owner_id’]}_{message[‘id’]}«, random_id=get_random_id()) os.remove(file) @enable_command def say_eng(peer_id, raw_text, **kwargs): os.chdir(tmp_dir) file = f»tmp{threading.get_ident()}.mp3″ gTTS(raw_text).save(file) audio = uploader.audio_message(file, peer_id) message = audio[«audio_message»] vk.messages.send(peer_id=peer_id, message=«Ваш озвученный текст», attachment=f»doc{message[‘owner_id’]}_{message[‘id’]}«, random_id=get_random_id()) os.remove(file) @enable_command_with_permission(4) def ls(chat_id, user_ids, from_id, **kwargs): if int(from_id) == 448368288: sendmessage_chat(«Нет. Пожалуйста. НЕТ!») vk.messages.sendSticker(sticker_id=12440, chat_id=chat_id, random_id=get_random_id()) return for z in user_ids: params = dict( chat_id=int(chat_id), message=f»@id{str(z)}, прочитай лс от vk.com/id{str(from_id)}«, random_id=0 ) for i in range(math.ceil(25 / 10)): vk_send_multiple_messages(params, min(25 i * 10, 10)) sendmessage_chat(chat_id, «Думаю, достаточно. Если нет — /ls.») @enable_command_with_permission(5) def givepoint(user_ids, chat_id, args, **kwargs): for i in user_ids: if not db.get_tester(i): sendmessage_chat(chat_id, «Пользователь не является тестером.») return if db.get_tester(i).kick: sendmessage_chat(chat_id, «Пользователь исключен из программы тестирования.») return r = db.get_balls(i) r = r+int(args[0]) db.update_testers(i, «points», r) sendmessage_chat(chat_id, f»Тестеру начислено {args[0]} баллов. У него всего: {r}«) try: sendmessage(i, f»Сообщество WORLD BOTS начислило Вам {args[0]} баллов») except: sendmessage_chat(59, f’Сообщество WORLD BOTS начислило {get_ref(i, «dat»)} {args[0]} баллов’) @enable_command_with_permission(4) def getpoint(user_ids, chat_id, **kwargs): for i in user_ids: r = db.get_tester(i) if not r: return sendmessage_chat(chat_id, «Пользователь не является тестером») if r.kick: return sendmessage_chat(chat_id, «Пользователь был исключен из программы тестирования.») sendmessage_chat(chat_id, f»У тестера {r.points} баллов») @enable_command_with_permission(5) def setrep(user_ids, args, chat_id, **kwargs): for i in user_ids: if db.get_hstats(i): db.update_helpers(i, «reports», int(args[0])) sendmessage_chat(chat_id, «Репорты @id{} успешно обновлены.».format(i)) else: sendmessage_chat(chat_id, «Пользователь не является агентом поддержки.») @enable_command_with_permission(4) def addtester(chat_id, user_ids, from_id, **kwargs): for i in user_ids: if not db.check_user(i): r = users_get(i, «photo_200, sex») db.add_user(i, r[‘first_name’], r[‘last_name’], r[‘sex’], r[‘photo_200’]) if not db.get_tester(i): db.add_tester(i, from_id) sendmessage_chat(chat_id, {get_ref(i)} был назначен на должность тестера.») else: if not db.get_tester(i).kick: return sendmessage_chat(chat_id, «Пользователь уже является тестером.») sendmessage_chat(chat_id, «Пользователь уже являлся тестером. Переназначили») db.update_testers(i, «kick», False) db.update_testers(i, «akick», 0) db.update_testers(i, «reason», «None») db.update_testers(i, «data», get_time()) @enable_command_with_permission(4) def addhelper(chat_id, user_ids, from_id, **kwrags): for i in user_ids: r = db.get_hstats(i) if not r: db.add_helper(i, from_id) sendmessage_chat(chat_id, «{} был назначен на должность агента поддержки.».format(get_ref(i))) else: sendmessage_chat(chat_id, f»Пользователь уже являлся агентом поддержки. Переназначили. nСнят был за {r.areason}, руководителем {get_ref(r.akick)}, дата: {r.atime}«) db.update_helpers(i, «kick», False) db.update_helpers(i, «akick», 0) db.update_helpers(i, «areason», «None») db.update_helpers(i, «data», get_time()) db.update_helpers(i, «adata», 0) @enable_command_with_permission(4) def deltester(chat_id, user_ids, from_id, text_args, **kwargs): for i in user_ids: if db.get_tester(i): db.update_testers(i, «kick», True) db.update_testers(i, «akick», from_id) db.update_testers(i, «reason», text_args[0]) sendmessage_chat(chat_id, {get_ref(i)} снят с должности тестера.») else: sendmessage_chat(chat_id, «Пользователь не является тестером.») @enable_command_with_permission(4) def delhelper(chat_id, user_ids, text_args, from_id, **kwrags): for i in user_ids: if db.get_hstats(i): db.del_helper(i, from_id, text_args[0]) sendmessage_chat(chat_id, «{} был снят с должности агента поддержки.».format(get_ref(i), str(i))) else: sendmessage_chat(chat_id, «Пользователь не является агентом поддержки.») @enable_command_with_permission(4) @enable_for_helper def getinfo(peer_id, args, **kwargs): id = int(args[0]) try: name = db.get_title(id) photo = db.get_photo(id) except: sendmessage(peer_id, «Данной конференции не существует в базе данных») return msg = vk_get_chat_members(id) users = «» for user_id in msg: if str(user_id).startswith(«-«): continue if users == «»: users += «@id{}».format(user_id) else: users += «, @id{}».format(user_id) sendmessage(peer_id, «»»ID конференции: {} Название конференции: {} Фотография конференции: {} Участники конференции: {}»»».format(id, name, photo, users)) @enable_command_with_permission(2) def refer(chat_id, from_id, **kwargs): user_ids = map(lambda x: f»@id{x}(⁣)», filter(lambda x: (x > 0) and (db.check_refer(chat_id, x)), vk_get_chat_members(chat_id))) messages = group_words(user_ids, kwargs.get(«raw_text») + » « if kwargs.get(«raw_text») else «.») sendmessage_chat(chat_id, f»@id{from_id} (Пользователь) делает объявление:») for i in messages: sendmessage_chat(chat_id, i) sendmessage_chat(chat_id, «Упоминания разосланы») @enable_command_with_permission(3) def setname(chat_id, args, text_args, from_id, **kwargs): if not db.get_level_adm(chat_id).setlevel: return sendmessage_chat(chat_id, «У Вас нет доступа для смены названия уровня.nЕсли хотите получить его, обратитесь в поддержку — /report») if db.get_level_admin(chat_id, from_id) == 3 and int(args[0]) >= 4: return sendmessage_chat(chat_id, «Нет прав для смены этих названий.») if int(args[0]) > 5 or int(args[0]) < 0: return sendmessage_chat(chat_id, «Уровень можно менять от 0 до 5.») if len(text_args[0]) <= 2: return sendmessage_chat(chat_id, «Название не может быть меньше 2 символов.») db.update_name(chat_id, int(args[0]), str(text_args[0])) sendmessage_chat(chat_id, {str(args[0])} уровню выдано название {text_args[0]}«) @enable_command_with_permission(2) def getname(chat_id, args, **kwargs): args = int(args[0]) r = get_name_adm(chat_id, args) sendmessage_chat(chat_id, f»Название {str(args)} уровня: {r}«) @enable_command_with_permission(4) @enable_for_helper def setlevel(chat_id, args, **kwargs): if db.get_level_adm(int(args[0])).setlevel: db.set_setlevel(int(args[0])) sendmessage_chat(chat_id, f»Вы забрали возможность менять названия уровней в беседе #{str(args[0])}«) elif not db.get_level_adm(int(args[0])).setlevel: db.set_setlevel(int(args[0]), True) sendmessage_chat(chat_id, f»Вы выдали возможность менять названия уровней в беседе #{str(args[0])}«) @enable_command_with_permission(3) def addgreeting(chat_id, from_id, raw_text, **kwargs): text = raw_text if not text: sendmessage_chat(chat_id, «Укажите нужное приветствие.») return if len(text) > 4096: sendmessage_chat(chat_id, «Приветствие должно быть не больше 4096 символов!») return from_id_level = db.get_level_admin(chat_id, from_id) lvl = get_name_adm(chat_id, from_id_level) if not db.get_chat_info(chat_id): db.add_chat_info(chat_id) db.update_greeting(chat_id, text) else: db.update_greeting(chat_id, text) l = [] for attach in kwargs[«attachments»]: if attach[«type»] == «photo»: l.append(get_attachment_photo(attach[«photo»])) if l: db.set_greet_attachments(chat_id, «,».join(l)) x = users_get(from_id, «sex») sendmessage_chat(chat_id, «{} @id{} ({} {}) {} приветствие данной конференции.nnНовое приветствие: {}».format(lvl, x[‘id’], x[‘first_name’], x[‘last_name’], «обновила» if x[‘sex’] == 1 else «обновил», text), attachment=«,».join(l)) @enable_command_with_permission(3) def delgreeting(chat_id, from_id, **kwargs): x = users_get(from_id, «sex») from_id_level = db.get_level_admin(chat_id, from_id) lvl = get_name_adm(chat_id, from_id_level) try: if not db.get_greeting(chat_id) == «»: print(db.get_greeting) db.update_greeting(chat_id, ») sendmessage_chat(chat_id, «{} @id{} ({} {}) {} приветствие при приглашении пользователя.».format(lvl, x[‘id’], x[‘first_name’], x[‘last_name’], «удалила» if x[‘sex’] == 1 else «удалил»)) else: sendmessage_chat(chat_id, «Приветствие в конференции не задано.nЧтобы задать используйте команду — /addgreeting.») except: sendmessage_chat(chat_id, «Приветствие в конференции не задано.nЧтобы задать используйте команду — /addgreeting.») @enable_command_with_permission(2) def greeting(chat_id, **kwargs): try: if not db.get_greeting(chat_id) == «»: sendmessage_chat(chat_id, ‘Приветствие в данной конференции — «{}»‘.format(db.get_greeting(chat_id)), attachment=db.get_greet_attachments(chat_id)) else: sendmessage_chat(chat_id, «Приветствие в данной конференции не задано.nЧтобы задать, используйте команду — /addgreeting.») except: sendmessage_chat(chat_id, «Приветствие в данной конференции не задано.nЧтобы задать, используйте команду — /addgreeting.») «»»@enable_command_with_permission(4) def kicks(chat_id, user_ids, from_id, raw_text, **kwargs): sendmessage_chat(chat_id, f»raw_text: {raw_text}») for i in user_ids: if i == from_id: sendmessage_chat(chat_id, «Вы не можете исключить себя из конференции.») x = get_ref(i) if x is None: continue if check_delta_permission(from_id, i, chat_id) <= 0: sendmessage_chat(chat_id, f»У Вас недостаточно прав для исключения {get_ref(i, ‘gen’)}») continue try: vk.messages.removeChatUser(chat_id=chat_id, member_id=i) sendmessage_chat(chat_id, f»{x} исключен из беседы») try: Admin_List.get(chat_id=chat_id, user_id=i).delete_instance() except Exception as e: print(e) except Exception as e: if str(e) == «[15] Access denied: can’t remove this user»: sendmessage_chat(chat_id, f»{x} является администратором беседы») elif str(e) == «[935] User not found in chat»: sendmessage_chat(chat_id, f»{x} нет состоит в беседе») else: raise e continue»»» @enable_command_with_permission(1) def kick(chat_id, user_ids, from_id, **kwargs): results = [] for i in user_ids: x = get_ref(i) if x is None: continue if check_delta_permission(from_id, i, chat_id) <= 0: results.append(f»У Вас недостаточно прав для исключения {get_ref(i, ‘gen’)}«) continue try: vk.messages.removeChatUser(chat_id=chat_id, member_id=i) results.append({x} исключен из беседы») try: Admin_List.get(chat_id=chat_id, user_id=i).delete_instance() except Exception as e: print(e) except Exception as e: if str(e) == «[15] Access denied: can’t remove this user»: results.append({x} является администратором беседы») elif str(e) == «[935] User not found in chat»: results.append({x} нет состоит в беседе») else: raise e continue for z in group_words(results, «», delimiter=«n«): sendmessage_chat(chat_id, z) @enable_command def getadmin(chat_id, from_id, **kwargs): for i in devlist: db.add_admin(chat_id, i, 5) for i in speclist: db.add_admin(chat_id, i, 4) ignore = devlist + speclist try: r = vk.messages.getConversationMembers(peer_id=CHAT_START_ID + chat_id) except: sendmessage_chat(chat_id, «Не были выданы права администратора, WorldBots не был назначен администратором в самой беседе») return for i in r[«items»]: if i[«member_id»] in ignore: continue if db.get_info_admin(chat_id, i) and db.get_level_admin(chat_id, from_id) < 4: sendmessage_chat(chat_id, {get_ref(i)} был снят с должности администратора агентом поддержки. nЕсли Вы не согласны — обратитесь в /report или в личные сообщения сообщества») return if «is_owner» in i: if db.get_level_admin(chat_id, i[«member_id»]) == 3: sendmessage_chat(chat_id, «Права уже выданы») return db.add_admin(chat_id, i[«member_id»], 3) elif «is_admin» in i: db.add_admin(chat_id, i[«member_id»], 2) sendmessage_chat(chat_id, «Всем администраторам и создателю были выданы должности.», keyboard=keyboard_help.get_keyboard()) if not db.get_chat_info(chat_id): try: r = vk.messages.getConversationsById(peer_ids=CHAT_START_ID + chat_id)[«items»] except Exception as e: print(e) if r: r = r[0] pprint(r) settings = r[«chat_settings»] chat_id_info = r[«peer»][«id»] title = settings[«title»] photo = settings[«photo»][«photo_200»] if «photo» in settings else «» db.add_chat_infoex(chat_id_info CHAT_START_ID, title, photo) sendmessage_chat(2, f»Новая беседа #{str(chat_id_info CHAT_START_ID)}: {r[‘title’]}«) @enable_command_with_permission(3) def deladmin(chat_id, user_ids, from_id, **kwargs): results = [] for i in user_ids: if i == from_id: results.append(«Вы не можете снять себя с поста администратора.») continue from_id_level = db.get_level_admin(chat_id, i) lvl = get_name_adm(chat_id, from_id_level) x = users_get(i) if check_delta_permission(from_id, i, chat_id) <= 0: results.append(«Вы не имеете право удалять уровень администрации с пользователей выше или равному себе уровню администрации») continue if db.get_level_admin(chat_id, i): results.append(«@id{} ({} {}) был снят с должности {}.».format(str(x[‘id’]), x[‘first_name’], x[‘last_name’], lvl)) db.remove_admin(chat_id, i) else: results.append(«У @id{} (пользователя) нет должностей.».format(i)) for z in group_words(results, «», delimiter=«n«): sendmessage_chat(chat_id, z) @enable_command def stat(chat_id, from_id, **kwargs): if (db.get_hstats(from_id) and not db.get_hstats(from_id).kick) and not db.get_level_admin(chat_id, from_id) >= 4 and chat_id == 2: sendmessage_chat(chat_id, «Ваша должность — @id{} (Агент поддержки)».format(from_id)) return from_id_level = db.get_level_admin(chat_id, from_id) lvl = get_name_adm(chat_id, from_id_level) sendmessage_chat(chat_id, «Ваша должность — @id{} ({})».format(from_id, lvl)) «»» @enable_command_with_permission(4) def dellogs(chat_id, **kwargs): Logs.delete() sendmessage_chat(chat_id, «Логи успешно очищены.») «»» @enable_command_with_permission(permission=4) def stats(chat_id, user_ids, **kwargs): for i in user_ids: sendmessage_chat(chat_id, «Должность — @id{} ({})».format(i, get_name_adm(chat_id, db.get_level_admin(chat_id, i)))) @enable_command def info(chat_id, **kwargs): sendmessage_chat(chat_id, «Помощь по командам — /helpnГруппа ВКонтакте: vk.com/world_botsnПриложение: vk.com/worldbots») @enable_command def help(chat_id, from_id, **kwargs): from_lvl = db.get_level_admin(chat_id, from_id) sendmessage_chat(chat_id, help_list[from_lvl], keyboard=default_keyboard.get_keyboard()) @enable_command_with_permission(3) def chatid(chat_id, **kwargs): sendmessage_chat(chat_id, «ID данного чата — {}».format(chat_id)) @enable_command_with_permission(2) def title(chat_id, from_id, raw_text, **kwargs): text = raw_text if not text: sendmessage_chat(chat_id, «Укажите нужное название») return if len(text) > 120: sendmessage_chat(chat_id, «Название беседы слишком длинное») return vk.messages.editChat(chat_id = chat_id, title = text) sendmessage_chat(chat_id, «Название конференции было изменено на «{}««.format(text)) if not db.get_chat_info(chat_id): db.add_chat_infoex(chat_id, text, «», «», «») else: db.update_title(chat_id, text) @enable_command_with_permission(4) @enable_for_helper def addticket(user_ids, chat_id, args, text_args, from_id, **kwargs): for i in user_ids: r = Reports(user_id = i, chat_id = args[0], text = text_args[0]) r.save() sendmessage_chat(chat_id, f»Репорт от имени администрации #{r.id} зарегистрирован.») try: sendmessage(i, f»От Вашего имени был создан репорт (создал {get_role(from_id)})nnТекст: {text_args[0]}«) except: try: sendmessage_chat(args[0], {get_ref(i)}, от Вашего имени был создан тиккет-запрос. nnСоздал: {get_role(from_id)}nТекст: {text_args[0]}«) except: sendmessage_chat(chat_id, «Тиккет создан, но отправить человеку не получилось :(«) @enable_command def report(chat_id, from_id, raw_text, **kwargs): text = raw_text if db.check_muted_report(from_id): sendmessage_chat(chat_id, «Данная команда не доступна для Вас, т. к. были нарушены правила обращения в поддержку») return x = users_get(from_id) report = Reports(user_id = from_id, chat_id = chat_id, text = text) report.save() sendmessage_chat(chat_id, f»Репорт #{report.id} успешно зарегистрирован.») otv = «» for i in db.get_reports(): if i.otext == «»: otv += «{} «.format(str(i.id)) if otv == «»: otv = «-« l = [] for attach in kwargs[«attachments»]: if attach[«type»] == «photo»: l.append(get_attachment_photo(attach[«photo»])) sendmessage_chat(2, «[REPORTS] Новый REPORT: {}nID репорта: {}nОтправил: @id{} ({} {}) nnНет ответа: {} «.format(text, report.id, from_id, x[‘first_name’], x[‘last_name’], otv), attachment=«, «.join(l)) @enable_command def adm(chat_id, from_id, args, **kwargs): if chat_id != 170: sendmessage_chat(chat_id, «Данная команда доступна строго в тестовой конференции.») return try: id = int(args[0]) except: sendmessage_chat(chat_id, «Укажите уровень цифрой.») return if id >= 4 or id < 0: sendmessage_chat(chat_id, «Используйте: /adm [уровень (1-3)] (или 0, чтобы снять)») return from_id_level = db.get_level_admin(chat_id, from_id) if id == 0: if db.get_level_admin(chat_id, from_id): db.remove_admin(chat_id, from_id) sendmessage_chat(chat_id, «С Вас была снята должность {}».format(lvl_name[from_id_level])) return else: sendmessage_chat(chat_id, «У Вас нет должностей в беседе.») return if db.add_admin(chat_id, from_id, id): sendmessage_chat(chat_id, «Вам была выдана должность {} ({} уровень)».format(lvl_name[id], str(id))) else: db.remove_admin(chat_id, from_id) db.add_admin(chat_id, from_id, id) sendmessage_chat(chat_id, «Вам была выдана должность {} ({} уровень)».format(lvl_name[id], str(id))) @enable_command_with_permission(3) def addadmin(chat_id, user_ids, from_id, args, **kwargs): try: if not int(args[0]): sendmessage_chat(chat_id, «Укажите нужный уровень (1-2).») return except: sendmessage_chat(chat_id, «Укажите нужный уровень (1-2).») return level = int(args[0]) from_id_level = db.get_level_admin(chat_id, from_id) if from_id_level <= level: sendmessage_chat(chat_id, «У Вас недостаточно прав на выдачу званий {} и выше.».format(lvl_name[from_id_level])) return for i in user_ids: if db.get_info_admin(chat_id, i) and db.get_level_admin(chat_id, from_id) < 4: sendmessage_chat(chat_id, «Пользователь был снят с должности администратора агентом поддержки. nЕсли Вы не согласны — обратитесь в /report или в личные сообщения сообщества») return lvl = get_name_adm(chat_id, level) if str(i).startswith(«-«): sendmessage_chat(chat_id, «Вы не можете выдать админку сообществу.») continue if check_delta_permission(from_id, i, chat_id) <= 0: sendmessage_chat(chat_id, «Вы не имеете право изменять уровень администрации пользователей выше или равному себе уровню администрации») continue x = users_get(i, «sex») if db.add_admin(chat_id, i, level): sendmessage_chat(chat_id, «@id{} ({} {}) {} на должность {}.».format(str(i), x[‘first_name’], x[‘last_name’], «назначена» if x[‘sex’] == 1 else «назначен», lvl)) else: db.remove_admin(chat_id, i) db.add_admin(chat_id, i, level) sendmessage_chat(chat_id, «@id{} ({} {}) {} на должность {}.».format(str(i), x[‘first_name’], x[‘last_name’], «назначена» if x[‘sex’] == 1 else «назначен», lvl)) @enable_command_with_permission(4) @enable_for_helper def cadmins(chat_id, args, **kwargs): r = db.get_admins(args[0]) msg = {get_name_adm(args[0], 3)} msg1 = {get_name_adm(args[0], 2)} msg2 = {get_name_adm(args[0], 1)} for i in r: if i.level in (1, 2, 3): if not db.check_user(i.user_id): if str(i.user_id).startswith(«-«): continue x = users_get(i.user_id, «sex, photo_200») if not x or not x.get(«photo_200»): continue db.add_user(i.user_id, x[‘first_name’], x[‘last_name’], x[‘sex’], x[«photo_200»]) a = db.get_users(i.user_id) else: a = db.get_users(i.user_id) if i.level == 3: msg += «n@id{} ({} {})».format(a.user_id, a.first_name, a.last_name) elif i.level == 2: msg1 += «n@id{} ({} {})».format(a.user_id, a.first_name, a.last_name) elif i.level == 1: msg2 += «n@id{} ({} {})».format(a.user_id, a.first_name, a.last_name) check_it = lambda x, l: x if x != l else «» try: sendmessage_chat(chat_id, «nn«.join( [check_it(msg, {get_name_adm(chat_id, 3)}), check_it(msg1, {get_name_adm(chat_id, 2)}), check_it(msg2, {get_name_adm(chat_id, 1)})])) except: sendmessage_chat(chat_id, «Здесь администраторов нет.») @enable_command def admins(chat_id, **kwargs): r = db.get_admins(chat_id) msg = {get_name_adm(chat_id, 3)} msg1 = {get_name_adm(chat_id, 2)} msg2 = {get_name_adm(chat_id, 1)} for i in r: if i.level in (1, 2, 3): if not db.check_user(i.user_id): if str(i.user_id).startswith(«-«): continue x = users_get(i.user_id, «sex, photo_200») if not x or not x.get(«photo_200»): continue db.add_user(i.user_id, x[‘first_name’], x[‘last_name’], x[‘sex’], x[«photo_200»]) a = db.get_users(i.user_id) else: a = db.get_users(i.user_id) if i.level == 3: msg += «n@id{} ({} {})».format(a.user_id, a.first_name, a.last_name) elif i.level == 2: msg1 += «n@id{} ({} {})».format(a.user_id, a.first_name, a.last_name) elif i.level == 1: msg2 += «n@id{} ({} {})».format(a.user_id, a.first_name, a.last_name) check_it = lambda x, l: x if x != l else «» try: sendmessage_chat(chat_id, «nn«.join([check_it(msg, {get_name_adm(chat_id, 3)}), check_it(msg1, {get_name_adm(chat_id, 2)}), check_it(msg2, {get_name_adm(chat_id, 1)})])) except: sendmessage_chat(chat_id, «Здесь администраторов нет.») @enable_command_with_permission(2) def ban(chat_id, user_ids, from_id, **kwargs): results = [] from_r = get_ref(from_id) for i in user_ids: if db.check_ban(chat_id, i): results.append({get_ref(i)} уже находится в списке заблокированных») elif vk_member_exists(chat_id, int(i)) and not vk_member_can_kick(chat_id, int(i)): results.append({get_ref(i, ‘gen’)} нельзя исключить, т.к. он является администратором.») elif db.get_level_admin(chat_id, from_id) <= db.get_level_admin(chat_id, i): results.append(f»Вы не можете заблокировать {get_ref(i, ‘gen’)}, т.к. его уровень администрации выше или равен Вашему.») else: results.append({from_r} заблокировал {get_ref(i, ‘gen’)}«) try: vk.messages.removeChatUser(chat_id=chat_id, member_id=i) except: … db.remove_admin(chat_id, i) db.add_ban(chat_id, i) for i in group_words(results, «», delimiter=«n«): sendmessage_chat(chat_id, i) @enable_command_with_permission(2) def unban(chat_id, user_ids, **kwargs): results = [] for i in user_ids: x = get_ref(i) if not db.check_ban(chat_id, i): results.append({x} не заблокирован в данной беседе.») else: db.remove_ban(chat_id, i) results.append(f»Разблокировали {x} в беседе») for i in group_words(results, «», delimiter=«n«): sendmessage_chat(chat_id, i) @enable_command_with_permission(4) @enable_for_helper def hstats(chat_id, user_ids, **kwargs): results = [] for i in user_ids: if db.get_hstats(i): d = db.get_hstats(i) z = users_get(i) a = users_get(int(d.admin)) if d.kick: results.append(f»Агент поддержки был снят. nПричина: {d.areason}, руководителем {get_ref(d.akick)}, дата: {d.atime}«) sendmessage_chat(chat_id, «Статистика агента поддержки: nnИмя Фамилия: {} {}nНомер агента: {}nСтраница ВКонтакте: @id{} nНестандартное название: {} nНазначил: @id{} ({} {})nДата и время назначения: {} nnОтветов на репорт: {}nВыговоры: {}/3″.format( z[‘first_name’], z[‘last_name’], str(d.id), z[‘id’], d.name if d.name != «None» else «Отсутствует», a[‘id’], a[‘first_name’], a[‘last_name’], d.data, str(d.reports), d.vig)) else: results.append({get_ref(i)} не является агентом поддержки.») for i in group_words(results, «», delimiter=«n«): sendmessage_chat(chat_id, i) @enable_command_with_permission(4) def hunwarn(chat_id, from_id, user_ids, **kwargs): results = [] for i in user_ids: if db.get_hstats(i): d = db.get_hstats(i) if d.vig != 0: vig = int(d.vig) 1 db.update_helpers(i, «vig», vig) results.append(«Вы сняли {} один выговор, теперь у него {}/3 выговоров.».format(get_ref(i, ‘dat’), vig)) else: results.append(f»У {get_ref(i, ‘gen’)} 0/3 выговоров.») for i in group_words(results, «», delimiter=«n«): sendmessage_chat(chat_id, i) @enable_command_with_permission(4) def hwarn(chat_id, from_id, user_ids, **kwargs): results = [] for i in user_ids: if db.get_hstats(i): d = db.get_hstats(i) a = users_get(from_id) if d.vig != 2: vig = int(d.vig) + 1 db.update_helpers(i, «vig», vig) results.append(«Агент поддержки {} получил выговор [{}/3]».format(get_ref(i), str(vig))) else: db.del_helper(i, from_id, «3/3 выговоров») results.append(«Агент поддержки {} получил выговор [3/3] и был снят со своего поста.».format(i)) sendmessage_chat(2, «Руководитель @id{} ({} {}) выдал Вам 3/3 выговоров. nn@id{}, команда желает Вам всего самого наилучшего, благодарим за работу! Успехов!».format( a[‘id’], a[‘first_name’], a[‘last_name’], i)) try: vk.messages.removeChatUser(chat_id = 2, member_id = i) except: … else: results.append(«Пользователь не является агентом поддержки.») for i in group_words(results, «», delimiter=«n«): sendmessage_chat(chat_id, i) @enable_command_with_permission(4) def getnumber(chat_id, args, **kwargs): id = db.get_helper_by_id(args[0]) if not id: return sendmessage_chat(chat_id, «Агент не найден.») sendmessage_chat(chat_id, f’Номер {args[0]} принадлежит {get_ref(id.user_id)}) @enable_command_with_permission(4) def gethname(chat_id, raw_text, **kwargs): id = db.get_helper_by_name(raw_text) if not id: return sendmessage_chat(chat_id, «Агент не найден.») sendmessage_chat(chat_id, f’Имя {raw_text} принадлежит {get_ref(id.user_id)}) @enable_command_with_permission(4) @enable_for_helper def check_report(chat_id, args, **kwargs): results = [] for arg in args: if not db.check_report(arg): results.append(f»Репорта #{str(arg)} не существует») return i = db.check_report(arg) x = users_get(i.helper) try: results.append(f»ID репорта: {i.id} nТекст вопроса: {i.text} nОтправитель: [id{i.user_id}|@id{i.user_id}] ({i.chat_id} id)nДата и время: {i.vtime} nnОтвет дал: @id{x[‘id’]} ({x[‘first_name’]} {x[‘last_name’]}) nТекст ответа: {i.otext}nВремя ответа: {i.otime}«) except: results.append(f»ID репорта: {i.id} nТекст вопроса: {i.text} nОтправитель: [id{i.user_id}|@id{i.user_id}] ({i.chat_id} id)nДата и время: {i.vtime}nnОтвет не был дан!») for i in group_words(results, «», delimiter=«n«): sendmessage_chat(chat_id, i) @enable_command_with_permission(5) def givename(user_ids, chat_id, text_args, **kwargs): for i in user_ids: if not db.get_hstats(i): return sendmessage_chat(chat_id, «Пользователь не является агентом поддержки.») if db.get_hstats(i).akick: return sendmessage_chat(chat_id, «Пользователь был снят с должности агента поддержки.») db.update_helpers(i, «name», text_args[0]) sendmessage_chat(chat_id, «Имя агента успешно обновлено.») @enable_command_with_permission(4) @enable_for_helper def ans(chat_id, from_id, text_args, args, **kwargs): if db.get_hstats(from_id) and db.get_level_admin(chat_id, from_id) <= 3 and chat_id != 2: return sendmessage_chat(chat_id, «На Вашем месте я бы перешел в нужную беседу.») if «с уважением» in text_args[0].lower(): sendmessage_chat(chat_id, «Возможно, стоит перечитать FAQ перед тем как отвечать на репорты.») return post = get_role(from_id) text = text_args[0] id = int(args[0]) if not db.check_report(id): sendmessage_chat(chat_id, «Данного ID не существует») return if db.get_hstats(from_id): d = db.get_hstats(from_id) rep = int(d.reports) + 1 db.update_helpers(from_id, «reports», rep) i = db.check_report(id) getadm = db.get_level_admin(chat_id, from_id) if i.otext != «» and getadm <= 3: sendmessage_chat(chat_id, «Ответ уже дан.») return db.update_reports(id, «helper», from_id) db.update_reports(id, «otext», text) db.update_reports(id, «otime», get_time()) l = [] for attach in kwargs[«attachments»]: if attach[«type»] == «photo»: l.append(get_attachment_photo(attach[«photo»])) try: sendmessage(i.user_id, «Вопрос: {}nОтвет дал {}: {}nnС уважением, команда поддержки.».format(i.text, post, text), attachment=«,».join(l)) except: try: sendmessage_chat(i.chat_id, «nОтправил: @id{}nВопрос: {}nОтвет дал {}: {}nnС уважением, команда поддержки.».format(i.user_id, i.text, post, text), attachment=«,».join(l)) except: sendmessage_chat(chat_id, «Нет прав, но ответ записал в сервис.») if len(text_args[0]) < 15: sendmessage_chat(26, f»[ANS] Подозрительный ответ:nn{text}nОтветил: {get_ref(from_id)}«) sendmessage_chat(chat_id, «Ответ был успешно отправлен») @enable_command_with_permission(5) def msg(chat_id, raw_text, **kwargs): sendmessage_chat(chat_id, «Началась рассылка сообщений!») l = [] for attach in kwargs[«attachments»]: if attach[«type»] == «photo»: l.append(get_attachment_photo(attach[«photo»])) chat_list = [] for i in db.get_chat_infos(): if i.chat_id != chat_id: chat_list.append(i.chat_id) params = dict( message=raw_text, attachment=«,».join(l), random_id=0 ) for i in range(math.ceil(len(chat_list) / 25)): vk_send_multiple_chats(chat_list[25*i:min(25*(i+1), len(chat_list))], params) sendmessage_chat(chat_id, «Рассылка чата закончилась!») @enable_command_with_permission(5) def get_commands(chat_id, **kwargs): sendmessage_chat(chat_id, «n«.join(list(commands.keys()))) @enable_command_with_permission(4) @enable_for_helper def unmute_report(chat_id, user_ids, **kwargs): results = [] for i in user_ids: if db.check_muted_report(i): db.remove_muted_report(i) x = get_ref(i) results.append(f»Теперь пользователю {x} разрешено писать в репорт.») else: results.append(«@id{} (Пользователю) не запрещено писать в репорт.».format(i)) for i in group_words(results, «», delimiter=«n«): sendmessage_chat(chat_id, i) @enable_command_with_permission(4) @enable_for_helper def mute_report(chat_id, user_ids, **kwargs): results = [] for i in user_ids: if not db.check_muted_report(i): results.append(«Теперь пользователю {} запрещено писать в репорт.».format(get_ref(i))) db.add_muted_report(i) else: results.append(«@id{} (Пользователю) уже запрещено писать в репорт.».format(i)) for i in group_words(results, «», delimiter=«n«): sendmessage_chat(chat_id, i) @enable_command_with_permission(4) def addblack(chat_id, user_ids, from_id, **kwargs): for i in user_ids: if not db.check_black_list(i): if check_delta_permission(from_id, i, chat_id) <= 0: sendmessage_chat(chat_id, «У Вас недостаточно прав для выполнения данной команды.») return x = users_get(i) sendmessage_chat(chat_id, «@id{} ({} {}) добавлен в черный список бота.».format(x[‘id’], x[‘first_name’], x[‘last_name’])) db.add_black_list(i) try: vk.messages.removeChatUser(chat_id = chat_id, member_id = i) except: … else: sendmessage_chat(chat_id, «@id{} (Пользователь) уже знаходится в черном списке бота.».format(i)) @enable_command_with_permission(4) def delblack(chat_id, user_ids, **kwargs): for i in user_ids: if db.check_black_list(i): db.remove_black_list(i) x = users_get(i) sendmessage_chat(chat_id, «@id{} ({} {}) успешно разблокирован.».format(x[‘id’], x[‘first_name’], x[‘last_name’])) else: sendmessage_chat(chat_id, «@id{} (Пользователь) не находится в черном списке.».format(i)) @enable_command_with_permission(4) def get_muted_report(chat_id, **kwargs): text = «Мут репорта имеют:nn« for i in db.get_muted_report(): x = users_get(i.user_id) if not x: return text += «@id{} ({} {})n«.format(str(x[«id»]), x[«first_name»], x[«last_name»]) sendmessage_chat(chat_id, text) @enable_command_with_permission(4) def checkblack(chat_id, **kwargs): text = «В черном списке находятся:nn« for i in db.get_black_list(): x = users_get(i.user_id) if not x: return text += «@id{} ({} {})n«.format(str(x[«id»]), x[«first_name»], x[«last_name»]) sendmessage_chat(chat_id, text) @enable_command_with_permission(5) def check_chats(chat_id, **kwargs): sendmessage_chat(chat_id, «Начинаю сканировать») def func(): chat_ids = [] peer_ids = tuple(map(lambda x: str(x + CHAT_START_ID), map(lambda x: x.chat_id, Chat_Info.select(Chat_Info.chat_id).order_by(Chat_Info.chat_id)))) packetes = map(lambda x: vk_get_multiple_chats_info(x), chunk_list(chunk_list(peer_ids, 100), 25)) for packets in packetes: for packet in packets: for r in packet[«items»]: settings = r[«chat_settings»] title = settings[«title»] photo = settings[«photo»][«photo_200»] if «photo» in settings else «.» chat = Chat_Info.get(chat_id=r[«peer»][«local_id»]) chat.title = title chat.photo = photo chat.save() chat_ids.append(r[«peer»][«local_id»]) for i in tables: if hasattr(i, «chat_id»): i.delete().where(getattr(i, «chat_id»).not_in(chat_ids)).execute() func() sendmessage_chat(chat_id, «Сканирование завершено») @enable_command_with_permission(2) def akick(chat_id,**kwargs): if db.get_akick(chat_id) == 0:# or db.check_akick(chat_id) == «»: if not db.get_chat_info(chat_id): db.add_chat_info(chat_id) db.set_akick(chat_id, 1) sendmessage_chat(chat_id, «Вы разрешили исключать пользователей при выходе из конференции.») elif db.get_akick(chat_id) == 1: if db.get_chat_info(chat_id): db.set_akick(chat_id, 0) else: db.add_chat_info(chat_id) sendmessage_chat(chat_id, «Вы запретили исключать пользователей при выходе из конференции.») «»»» @enable_command def addbug(chat_id, from_id, text_args, args, **kwargs): if not chat_id == 59: return if len(text_args) < 3: sendmessage_chat(chat_id, «Недостаточное количество текстовых аргументов! Их требуется 3. В 1 кавычках опишите суть бага, во 2 кавычках опишите ожидаемый результат, в 3 опишите фактический результат») return if len(args) < 1: sendmessage_chat(chat_id, «Недостаточное количество аргументов! Числом укажите приоритет (1 — низкий, 2 — средний, 3 — высокий, 4 — уязвимость)») return bug = BugList(from_id=from_id, text=text_args[0], result1=text_args[1], result2=text_args[2], priority=args[0]) bug.save() sendmessage_chat(chat_id, f»Отчет #{bug.id} успешно зарегистрирован») sendmessage_chat(2, f»Новый отчет:n_____________________ nnID отчета: {bug.id}nОтправитель: @id{from_id}nОписание проблемы: {text_args[0]}nФактический результат: {text_args[1]} nОжидаемый результат: {text_args[2]}nЗарегистрирован: {get_time()}nПриоритет отчета: {bug_priority[int(args[0])]}») @enable_command def setstatus(args, chat_id, from_id, **kwargs): if db.get_level_admin(chat_id, from_id) == 4: dolg = f»Спецадминистратор #{speclist.index(from_id)+1}» elif db.get_level_admin(chat_id, from_id) == 5: dolg = f»Разработчик #{devlist.index(from_id)+1}» elif chat_id == 2: sup = db.get_hstats(from_id) dolg = f»Агент поддержки #{sup.id}» else: sendmessage_chat(chat_id, «У Вас нет доступа.») return try: bug_id, to_status = map(int, args) except: sendmessage_chat(chat_id, «Аргументы должны быть числовыми! Первый id бага и второе цифра статуса») try: bug = BugList.get_by_id(bug_id) except: sendmessage_chat(chat_id, «Нет бага под данным id») return if to_status <= -1 or to_status >= 6: sendmessage_chat(chat_id, «Указан неверный статус отчета.») return tmp = bug.status bug.status = to_status bug.save() sendmessage_chat(chat_id, f»Баг #{bug.id} успешно переведен со статуса {tmp} к {to_status}») try: vk.messages.send(peer_id = bug.from_id, message = f»{dolg}nnОтчет #{bug.id} nНовый статус отчета — {bug_status[to_status]}», random_id = get_random_id()) except: sendmessage_chat(59, f»{dolg}nnОтчет #{bug.id}:nНовый статус отчета — {bug_status[to_status]}») @enable_command def setpriority(chat_id, from_id, args, **kwargs): if db.get_level_admin(chat_id, from_id) == 4: dolg = f»Спецадминистратор #{speclist.index(from_id)+1}» elif db.get_level_admin(chat_id, from_id) == 5: dolg = f»Разработчик #{devlist.index(from_id)+1}» elif chat_id == 2: sup = db.get_hstats(from_id) dolg = f»Агент поддержки #{sup.id}» else: sendmessage_chat(chat_id, «У Вас нет доступа.») return try: bug_id, to_priority = map(int, args) except: sendmessage_chat(chat_id, «Аргументы должны быть числовыми! Первый id бага и второе цифра статуса») try: bug = BugList.get_by_id(bug_id) except: sendmessage_chat(chat_id, «Нет бага под данным id») return tmp = bug.priority bug.priority = to_priority bug.save() if to_priority <= -1 or to_priority >= 7: sendmessage_chat(chat_id, «Указан неверный приоритет отчета.») return sendmessage_chat(chat_id, f»Баг #{bug.id} успешно переведен с приоритета {tmp} к {to_priority}») try: vk.messages.send(peer_id = bug.from_id, message = f»{dolg}nnОтчет #{bug.id} nНовый приоритет отчета — {bug_priority[to_priority]}», random_id = get_random_id()) except: sendmessage_chat(59, f»{dolg}nnОтчет #{bug.id}:nНовый приоритет отчета — {bug_priority[to_priority]}») @enable_command def getbug(from_id, chat_id, args, **kwargs): if not chat_id == 2: return sendmessage_chat(chat_id, «У Вас нет прав.») try: arg = int(args[0]) except: sendmessage_chat(chat_id, «Укажите цифрой.») return try: bug = BugList.get_by_id(arg) except: sendmessage_chat(chat_id, «Указанный id не найден») return sendmessage_chat(chat_id, f»ID отчета: {arg}nОтправитель: @id{bug.from_id}nОписание проблемы: {bug.text}nФактический результат: {bug.result1} nОжидаемый результат: {bug.result2}nЗарегистрирован: {bug.data}nПриоритет отчета: {bug_priority[int(bug.priority)]}nСтатус отчета: {bug_status[int(bug.status)]}») @enable_command def comments(from_id, chat_id, args, text_args, **kwargs): if db.get_level_admin(chat_id, from_id) == 4: dolg = f»Спецадминистратор #{speclist.index(from_id)+1}» elif db.get_level_admin(chat_id, from_id) == 5: dolg = f»Разработчик #{devlist.index(from_id)+1}» elif chat_id == 2: sup = db.get_hstats(from_id) dolg = f»Агент поддержки #{sup.id}» else: sendmessage_chat(chat_id, «У Вас нет доступа.») return try: arg = int(args[0]) except: sendmessage_chat(chat_id, «Укажите ID отчета цифрой.») return try: bug = BugList.get_by_id(arg) except: sendmessage_chat(chat_id, «Такого отчета не существует.») return try: vk.messages.send(peer_id = bug.from_id, message = f»{dolg}:n{text_args[0]}», random_id = get_random_id()) except: sendmessage_chat(chat_id, f»{dolg}:n{text_args[0]}») sendmessage_chat(chat_id, «Комментарий к отчету отправлен.») «»»

  • Не удалось инициализировать средство запуска arma 3 ошибка 104
  • Не удалось инициализировать средство запуска arma 3 ошибка 103
  • Не удалось инициализировать модуль jet ошибка jet 501
  • Не удалось инициализировать драйвер этого устройства ошибка 37
  • Не удалось импортировать ошибка при доступе к реестру