Вывод списка игроков в беседе в Вк

AXM

Сообщения
85
Реакции
2
Собственно сабж..
Вывод списка игроков в беседе в ВКонтакте..
У кого есть идеи как реализовать такую же фичу?
12 Июл 2020
Также бот информирует о смене карты на сервере в беседе
12 Июл 2020
Я так понимаю там используется апи мониторинга какого то
 

Download all Attachments

Сообщения
52
Реакции
60
Помог
2 раз(а)
Можно реализовать такое, отправляем a2s запрос, получаем информацию о сервер и печатаем от имени сообщества в чате, понадобится a2s и vk_api, вообще тут можно сделать все что душе угодно, главное чтобы фантазия была
 

AXM

Сообщения
85
Реакции
2
Можно реализовать такое, отправляем a2s запрос, получаем информацию о сервер и печатаем от имени сообщества в чате, понадобится a2s и vk_api, вообще тут можно сделать все что душе угодно, главное чтобы фантазия была
Готов немножко оплатить за работу
 
Сообщения
194
Реакции
43
Помог
4 раз(а)
так это бот такой он уже реализован и на сколько знаю его продают вроде 150 рублей в месяц вот держи не реклама https://vk.com/onlinecheckbot
 
Сообщения
2,143
Реакции
1,225
Помог
44 раз(а)
ex3m777, у тебя здорово получилось с ботом в ТГ, но у меня нет беседы там. Было бы здорово увидеть твою реализацию для беседы ВК.
 
Сообщения
52
Реакции
60
Помог
2 раз(а)
Minni, Я думал сделать ВК бота для управления сервером, но таких просьб не видел) Я вот к примеру еще такое себе делал
 

Вложения

Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
ex3m777, что такое a2s запрос? В инете инфы нет.
 
Сообщения
58
Реакции
25
Помог
4 раз(а)
CLUQA, https://pypi.org/project/python-a2s/
12 Июл 2020
На питоне никогда не писал, но что-то получилось. мб ex3m777 допилит


C++:
import a2s
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
from config import token, ip, port, chatID

def write_msg(chat_id, s):
    random_id = vk_api.utils.get_random_id()
    vk.method('messages.send', {'chat_id': chat_id, 'message': s, 'peer_id': 2000000000 + chatID, 'random_id': random_id})

address = (ip, port)

vk = vk_api.VkApi(token=token)
vk._auth_token()

# Работа с сообщениями
longpoll = VkLongPoll(vk)

# Основной цикл
for event in longpoll.listen():

    # Если пришло новое сообщение
    if event.from_chat and event.type == VkEventType.MESSAGE_NEW:
        if event.to_me:
            #Сообщение от пользователя
            request = event.text

            # Собственно логика
            if request == "инфо":
                a2s_info = a2s.info(address)

                #Текущая карта
                mapName = a2s_info.map_name
                #Количество игроков
                playerCount = a2s_info.player_count

                info = 'Текущая карта: {0}'.format(mapName) + '\n' + 'Игроков на сервере: {0}/32'.format(playerCount)

                #Получаем список игроков
                players = []
                for player in a2s.players(address):
                    players.append(player.name)

                result = info + '\n\n' + '\n'.join(players)
                write_msg(event.chat_id, result)

Код:
token = 'token'
ip = '192.168.43.250'
port = 27016
chatID = 2

1594574171535.png
 

Вложения

Сообщения
52
Реакции
60
Помог
2 раз(а)
xramer, сервера ВК примерно в 2 часа ночи перезагружается, Лонг пул отвалится, нужно будет обработать исключение
 

AXM

Сообщения
85
Реакции
2
xramer, ничоси ..
в личку почему то не могу написать.. а ты не можешь подсказать как этот скрипт к беседе подключить?)
 
Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
xramer, а где можно узнать весь список map_name, player_count и им подобным переменным / массивам, которые можно получить через запрос a2s?
 
Сообщения
38
Реакции
8
Ответ в беседе будет личный или общий? Я не специалист в ВК , но если ответ будет для количества людей , то би-бикать будет для всех по запросу а не для одного. Как на меня это не лучшая идея.
 
Сообщения
58
Реакции
25
Помог
4 раз(а)
CLUQA, ссылку на либ выше приложил же
 
Сообщения
38
Реакции
8
CLUQA, фишка a2s это реализация протокола https://developer.valvesoftware.com/wiki/Server_queries . 1 запрос = 1 ответ. В 1 ответе = количество информации что дает сервер. В протоколе описано что сервер за раз может тебе выдать. В примере

Header byte Always equal to 'm' (0x6D)
Address string IP address and port of the server.
Name string Name of the server.
Map string Map the server has currently loaded.
Folder string Name of the folder containing the game files.
Game string Full name of the game.
Players byte Number of players on the server.
Max. Players byte Maximum number of players the server reports it can hold.
Protocol byte Protocol version used by the server.
Server type byte Indicates the type of server:
  • 'D' for dedicated server
  • 'L' for non-dedicated server
  • 'P' for a HLTV server
Environment byte Indicates the operating system of the server:
  • 'L' for Linux
  • 'W' for Windows
Visibility byte Indicates whether the server requires a password:
  • 0 for public
  • 1 for private
Mod byte Indicates whether the game is a mod:

и не более за 1 раз , и только.
И если я правильно понял , то ты хочешь получить список карт сервера, что ли. Такого сервер не выдает , если уж не поиграть на стороне amxx.

На счет a2s. Вот в чем он формирует ответ сервера :
Return Values

  • info: SourceInfo or GoldSrcInfo. They are documented in the source file. - Не понятно ..
  • players: List of Player items. Also documented in the corresponding source file - Список
  • rules: Dictionary of key - value pairs. - Словарь.
13 Июл 2020
CLUQA, вот так тебе выдаст всю информацию о сервере. Но судя по типу данных , там нужен тебе метод для выборки нужного элемента.

SourceInfo(protocol=17, server_name=" 24/7 Dustbowl :: Nemu's Stomping Ground", map_name='cp_dustbowl',
folder='tf', game='Team Fortress', app_id=440, player_count=31, max_players=33, bot_count=21,
server_type='d', platform='l', password_protected=True, vac_enabled=True, version='5579073',
edf=177, port=27015, steam_id=85568392920040090, stv_port=None, stv_name=None,
keywords='brutus,celt,couch,cp,dustbowl,increased_maxplayers,nemu,nocrits,nodmgspread,pony,replays,vanilla',
game_id=440, ping=0.253798684978392)
 
Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
xramer, понял.
tapexapex, благодарю.

Установил python, чет не запускается у меня.

Код:
Traceback (most recent call last):
  File "vkbot.py", line 15, in <module>
    longpoll = VkLongPoll(vk)
  File "/root/Python-3.6.1/vk_api/longpoll.py", line 517, in __init__
    self.update_longpoll_server()
  File "/root/Python-3.6.1/vk_api/longpoll.py", line 531, in update_longpoll_server
    response = self.vk.method('messages.getLongPollServer', values)
  File "/root/Python-3.6.1/vk_api/vk_api.py", line 646, in method
    raise error
vk_api.exceptions.ApiError: [15] Access denied: no access to call this method
13 Июл 2020
P.S. токен прописал в файле config.py
13 Июл 2020
xramer, token пользователя использовали?
 
Сообщения
52
Реакции
60
Помог
2 раз(а)
CLUQA, проверьте разрешение у токена на отправку сообщений
 
Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
ex3m777, также. Токен пользователя использовать нужно же?
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу