[Discord Core]Веб чат на сервер

x330122

Участник
Сообщения
357
Реакции
152
В данном туториале я расскажу как настроить веб чат на сервер, чтобы получилось так:
gH4-Yb1-BZ4.jpg

Что понадобится:
  1. Python 3.7.1
  2. Установленный [Discord] Core на сервере
  3. Сам дискорд сервер
Принцип работы:
Питон бот парсит сообщение пользователя с правами на вебчат, затем отсылает RCON команду с содержимым.
Вам понадобится вторая машина чтобы хостить Python скрипт.
Не поддерживает русский язык
Любое сообщение в канале отправится на сервер
Можете уже закрывать статью :pioneer_smoke:

Подготовка:
  1. python.exe -m pip install -U https://github.com/Rapptz/discord.py/archive/rewrite.zip
  2. pip install python-valve
  3. Сконфигурированный "webchat" вебхук к Discord.cfg
  4. Discord токен бота(получить его можно тут)

Приступим :pioneer_smoke:

Discord()
Первым делом надо создать бота на этой странице.
После того как создали бота, скопируйте его Client ID во вкладке Oauth2
Затем, в адресную строку вот это
C-подобный:
https://discordapp.com/oauth2/authorize?client_id=###ТУТ CLIENT ID БОТА ####&scope=bot&permissions=214695859
Затем указываете сервер где будет бот.
После этого скопируйте Token бота во вкладке Bot где создавали бота куда-нибудь в блокнот
На сервере создайте роль которая позволит игрокам писать сообщение в веб чат


Python
Затем вставьте IP,Port сервера и RCON пароль в скрипт.

C-подобный:
import discord
from discord.ext.commands import Bot
from discord.ext import commands
import asyncio
import time
import valve.source
import valve.source.a2s
import valve.source.master_server
import valve.rcon
server_address = ("ип сервера", порт)
password = "RCON пароль сервера"

Client = discord.Client()
client = commands.Bot(command_prefix = "!")



@client.event
async def on_ready():
    print("Running chat bot")



@client.event
async def on_message(message):
    contents = message.content.split(" ")
    #print(message)
    userID = message.content
    name = message.author.name
    print(userID)
    idd = message.author.id
    userID = userID.replace(";", "")
    #print(message.author.roles)
    for role in message.author.roles:
        print(role.id)
        wtf = str(role.id)
        if wtf == "1111111111111":  #тут напишите ид роли которую игрок должен иметь чтобы сообщение отправлялось на сервер
            print("Allowed")
            with valve.rcon.RCON(server_address, password) as rcon:
                result = "ds_print " + " " + name + " " +userID #ds_print опционален, можете тут сделать say и на этом закончить
                rcon(result)
#<---Bot Token--->

client.run("ТУТ ТОКЕН")
Если все работает, напишите в чат любое сообщение, если в Python вывело сообщение, значит все работает.
Отображение сообщений игроков в чате:
Можно использовать пример от крузи

Реализование пока сырое и данную статью можно было не делать :sensored:.
 
Последнее редактирование:
Сверху Снизу