Как по мне, недостаточно оснований. На всей видеозаписи они были рядом от силы секунды две, но может быть он просто решил нападать на тебя, а не другого человека.
Насколько я понял, речь идёт об "Асоциальном поведении".
У каждого модератора свои рамки для бана, в большинстве случаев они примерно такие: 4 мата/2 оска = 720 минут бана, 8 матов/4 оска = 1440 минут бана. Но также, ты можешь попробовать подать репорт чат (/report chat <ник нарушителя>), если его проверят, то выдадут мут.
Краткая информация: Python - это высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода.
Подготовка: Прежде всего, нужно включить LongPool в вашей группе (смотрите спойлер).
Теперь, давайте создадим проект/папку для нашего проекта. А в ней - bot.py
Начинаем кодить: Для начала, давайте установим нужные нам пакеты. Библиотека для работы с ВК API
python -m pip install vk_apiДля работы с интернетом:
python -m pip install requestsВвести эти две команды можно в IDE, или консоле (cmd).
Приступим к самому коду!
Импортируем библиотеки
import requests
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventTypeИ вставляем этот код, содержащий функцию отправки сообщения и авторизацию в Апи
def send_message(user_id, message):
vk.method('messages.send', {'user_id': user_id, 'message': message, 'random_id': 0})
# Ключ доступа к сообществу
token = "aeb83497cbdbb6f2d2eadce6b474d2637b4c8350bdec4818acc237221513a257f7b016d3a415536664f91"
vk = vk_api.VkApi(token=token)
data = VkLongPoll(vk)
Далее, можем написать и обработчик команд. Состоять он будет из цикла, проверки новых событий и простого обработчика команд
for event in data.listen():
# Если пришло новое сообщение
if event.type == VkEventType.MESSAGE_NEW:
if event.to_me:
text = event.text
text = text.split()
if text[0] == "/help":
send_message(event.user_id, "Доступные команды:\n/stats < ник > - просмотр статистики игроков")
В итоге ваш код должен выглядеть так:
import requests
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
def send_message(user_id, message):
vk.method('messages.send', {'user_id': user_id, 'message': message, 'random_id': 0})
token = "aeb83497cbdbb6f2d2eadce6b474d2637b4c8350bdec4818acc237221513a257f7b016d3a415536664f91"
vk = vk_api.VkApi(token=token)
data = VkLongPoll(vk)
for event in data.listen():
if event.type == VkEventType.MESSAGE_NEW:
if event.to_me:
text = event.text
text = text.split()
if text[0] == "/help":
send_message(event.user_id, "Доступные команды:\n\n/stats < ник > - просмотр статистики игроков")
Пожалуй, теперь стоит запустить этот Python файл
Важно! Если вы это ранее не сделали, то включите сообщения сообщества!
Если вы всё сделали правильно и вам не выдало никаких ошибок, то тогда давайте напишем нашему боту "/help".
Собственно если вы получили такое сообщение, то можем начинать работать с самим API.
Работа с API: Для получения информации об игроке мы будем использовать библиотеку requests.
Давайте добавим новую команду - /stats. Для этого перейдем в обработчик команд и вставим под ифом с "/help" этот текст:
#или если текст равен /stats
elif text[0] == "/stats":
send_message(event.user_id, "Тестовая команда")
Теперь, можем наконец-то поработать с апи. Перед send_message добавим подключение к нему
response = requests.get(f'https://api.vimeworld.ru/user/name/{text[1]}').json()[0]Но не стоит забывать, про обработку ответа от сервера. Поэтому, нужно создать условие:
#если айди равен чему-то
if response['id']:
#создаем переменную с данными игрока
player = f"Профиль игрока: {response['username']}\nРанг: {response['rank']}"
#иначе
else:
#создаем переменную с ошибкой
player = f"Такого игрока не существует!"
Теперь переменная player является нашим текстом для ответа, поэтому изменяем строчку с send_message на эту:
send_message(event.user_id, player)И в окончании данного этапа, давайте перезапустим бота (сохранив пред этим файлик) и напишем боту "/stats barahag"
Теперь, как насчет добавления новой информации в нашу команду? Давайте зайдем в официальную документацию к апи (ну или под спойлер), и посмотрим, какую информацию предоставляет нам VimeWorld
Для гильдии можно написать простой обработчик:
if response['guild']:
guild = response['guild']['name']
else:
guild = "Отсутствует"
А так же как и в PHP, стоило бы преобразовать наигранное время в человеческий вид:
days = str(response['playedSeconds']/60/60/24).split(".")[0]
hour = str(response['playedSeconds']/60/60%24).split(".")[0]
min = str(response['playedSeconds']/60%60).split(".")[0]
sec = str(response['playedSeconds']%60).split(".")[0]
В конце же, давайте изменим значение переменной:
player = f"Профиль игрока: {response['username']}" \
f"\nРанг: {response['rank']}" \
f"\nГильдия: {guild}" \
f"\nПроведено в игре: {days} дн. {hour} ч. {min} мин. {sec} сек."
Новые команды: Но зачем ограничиваться только статистикой? Давайте также добавим две новые команды: /staff и /streams.
В отличие от "/stats", здесь мы должны подключиться один раз к апи и работать с информацией в цикле.
/streams:
elif text[0] == "/streams" or text[0] == "/стримы":
response = requests.get(f'https://api.vimeworld.ru/online/streams').json()
count = len(response)
s = -1;
if count > 1:
while s != count:
s += 1
time1 = str(response[s]['duration'] / 60 / 60 / 24).split(".")[0]
time2 = str(response[s]['duration'] / 60 / 60 % 24).split(".")[0]
time3 = str(response[s]['duration'] / 60 % 60).split(".")[0]
time4 = str(response[s]['duration'] % 60).split(".")[0]
streams = streams + f"{response[s]['title']}\nСтример: {response[s]['owner']} \nЗрителей: {response[s]['viewers']}\nСсылка: {response[s]['url']}\nСтрим идёт: {time1} дн. {time2} ч. {time3} мин. {time4} сек.\n"
send_message(event.user_id, f"Стримы в данный момент:{streams}\nВсего стримов: {count}")
else:
send_message(event.user_id, f"Стримы в данный момент:\n\nВсего стримов: {count}")
/staff:
elif text[0] == "/staff" or text[0] == "/модеры":
requests.get(f'https://api.vimeworld.ru/online/staff').json()
count = len(response)
moders = ""
if count > 1:
for i in range(0, count):
if response[i]['rank'] == 'MODER': rank = '[Модер]'
if response[i]['rank'] == 'WARDEN': rank = '[Пр.Модер]'
if response[i]['rank'] == 'CHIEF': rank = '[Гл.Модер]'
moders += f"\n{rank} {response[i]['username']}"
send_message(event.user_id, f"Модераторы в сети:\n{moders}\n\nВсего Модераторов: {count}")
else:
send_message(event.user_id, f"На данный момент модерация в сети отсутствует")
После добавления новых команд, весь ваш код должен выглядеть так:
Поздавляю! Теперь у вас есть бот способный показывать модераторов, стримы и статистику игроков!
Общая информация
API (Application Programming Interface) - составляющая часть сервера, которая получает запросы и отправляет ответы.
У VimeWorld'а тоже присутствует публичный апи. С помощью него мы можем просмотреть статистику любого игрока, стримы в данный момент, последние матчи на сервере, или например модераторов в сети.
Подготовка
Для создания бота в ВК присутствует несколько видов апи: CallBack (для PHP) и LongPool (для остальных языков). Основная разница в том, что CallBack будет отправлять нам события. А LongPool же сам обращается к серверам.
В любом случае для работы бота нам нужен ключ доступа к сообществу. Получить его можно зайдя в настройки группы, и перейдя по этому пути: Настройки->Работа с API. После этого нужно кликнуть на кнопку "Создать ключ" и выдать ему все права.
В этом гайде будет присутствовать 3 языка программирования: PHP, Python и JavaScript (NodeJS).
Полезные ссылки
Официальная документация к API VimeWorld - https://vimeworld.github.io/api-docs/
Json Formatter (красивый JSON в браузере) - https://chrome.google.com/webstore/detail/json-formatter/bcjindcccaagfpapjjmafapmmgkkhgoa
Бесплатный хостинг (для PHP) - https://beget.com/ru/free-hosting
Бесплатный хостинг (для Python и NodeJS) - https://heroku.com/
Python - https://www.python.org/downloads/
NodeJS - https://nodejs.org/en/
Last update: 30.10.20 Привет, дорогие друзья! Предлагаю добавить систему друзей на модовые сервера!
Команды: /friend add <ник> - добавить игрока в друзья. /friend remove <ник> - удалить игрока из друзей. /friend list - полный список друзей. /friend customization - настройки (см. ниже) /friend ignore <ник> - игнорирование запрсов в друзья. /friend chat create <ники участников> - создать чат. /friend chat <message> - отправить сообщение в чат друзей. (Связанно с прошлой командой) /friend alerts on/off - включить/выключить оповещения о входе в игру (см. ниже). /friend tptoggle - отключение телепортаций от друзей.
Описание: Игроки не могут наносить урон/убивать своих друзей. Это поможет игрокам, которые создают команды из друзей. Сервер будет оповещать о входе друзей. Ники у друзей будут выделяться, например, окрашиваться в зеленый цвет.
Настройки: В настройках можно будет настроить некоторые функции. Например, можно будет изменить цвет ника друзей (визуально), отключить выделение ников друзей, отключить/включить функционал.