Skip to content

Latest commit

 

History

History
112 lines (87 loc) · 4.35 KB

README.md

File metadata and controls

112 lines (87 loc) · 4.35 KB

BALLE BOT

Introdução

Esse é um projeto para criar o próprio bot de discord para o servidor da Rafella Ballerini, e aqui estão (até agora) algumas anotações sobre como montar o bot.

Techs

Confome desenvolvemos o projeto, atualizar quais tecnologias estamos utilizando

  • Python: Linguagem de programação de sintaxe simples;
  • Mongodb: Bando de dados não relacional para armazenamento de informações, está sendo utilizado o banco diretamente no site;
  • Discord Developer Portal: site para registrar sua aplicação/bot;
  • Discord.py: Biblioteca para integração com o discord;

Requisitos

  • Ter instalado Python na versão 3.5 (durante o desenvolvimento, começamos na versão 3.5, então não podemos garantir que versões anteriores funcionem);
  • Crie um arquivo Token.py, preencha com os seguintes dados:
class TokenDiscord:
  def uploadToken():
    return {
      "database": "Link de conexão ao mongodb",
      "idapresentacao":"é um long que representa o id de um dos canais onde vai ter pontos por reações",
      "idaviso":"é um long que representa o id de um dos canais onde vai ter pontos por reações",
      "token":"token de acesso do bot, gerado no site do Discord Developer Portal"
    }

GAMIFICAÇÃO

A gamificação do bot é feita através de 2 tipos, a xp e níveis, o xp é dividido em semanal e por canal, os níveis são calculados de forma geral;

XP

O cálculo do xp vai seguir essas regras:

  • Por mensagem:
    • Mínimo de 2 palavras;
    • Máximo por mensagem, 40 pontos;
    • Número de caracteres não repetidos / 3;
  • Reações a mensagens:
    • Disponíveis em alguns canais;
    • Badlist de emojis, remove pontos, 200 pontos, remove a reação;
    • Goodlist de emojis, 5 emojis, 2x pontos, 100 pontos base;
  • Tempo de canais de voz:
    • Conferir quais informações recebemos para avaliar os pontos
  • Compartilhamento de tela:
    • Conferir quais informações recebemos para avaliar os pontos

pymongo operações

Essas informações que estão sendo mostradas é apenas para enteder como deve ser utilizado o pymongo

  • Insert
data = {
  'nome': 'Jef',
  'idade': 45
}

responseData = collection.insert_one(data)
# responseData é do tipo InsertOneResult, só vi que tem o inserted_id até agora

Infos sobre InsertOneResult

  • Replace
data = {
  'nome': 'Jef',
  'idade': 45
}

responseData = collection.replace_one({'nome': 'Mateus'}, data)
# responseData é do tipo UpdateResult, só vi que tem matched_count,modified_count e upserted_id de informações relevantes

Infos sobre UpdateResult

  • Update
responseData = collection.update_one({'nome': 'Mateus'}, {'$inc': {'idade': 2}}, upsert)
# responseData é do tipo UpdateResult, só vi que tem matched_count,modified_count e upserted_id de informações relevantes
# incrementa o valor idade em 2
# upsert é um valor booleano, que vai definir se é necessário inserir o objeto ou não

Infos sobre UpdateResult

  • Outros operadores interessantes:
    • $set: vai definir um valor específico
    • $mul: vai múltiplicar a propriedade pelo valor especificado
    • $rename: vai trocar o campo
    • $setOnInsert: se a query não resultar em nada, e o objeto tiver que ser inserido, adiciona os campos
    • $unset: remove o campo
  • Para arrays:
    • $: atualiza o primeiro que encontrar na condição
    • $[]: atualiza todos os elementos encontrados
    • $[<identifiers>]: atualiza todos que combinarem com a condição dentro do parênteses

Infos sobre Update Operators

  • update_many
responseData = collection.update_many(
    {'valor': 10}, {'$set': {'teste2':'novo'}})
# procura todo lugar onde valor é igual a 10, e altera/adiciona o campo teste2 = novo

Infos sobre UpdateResult