bot.py
unknown
plain_text
3 years ago
3.1 kB
8
Indexable
import discord
import requests
import json
import asyncio
import datetime
import time
from discord.ext import commands
intents = discord.Intents.default()
intents.message_content = True
bot=commands.Bot(command_prefix="--",case_insensitive=True,intents=intents)
bot.remove_command("help")
client = discord.Client(intents=discord.Intents.all())
client = commands.Bot(command_prefix='!', intents=discord.Intents.all())
def get_score():
leaderboard = ''
id = 1
response = requests.get("http://127.0.0.1:8000/api/score/leaderboard/")
json_data = json.loads(response.text)
for item in json_data:
leaderboard += str(id) + ' ' + item['name'] + ":white_small_square: Points: " + str(item['points']) + "\n"
id += 1
return(leaderboard)
def update_score(user, points):
url = 'http://127.0.0.1:8000/api/score/update/'
new_score = {'name': user, 'points': points}
x = requests.post(url, data = new_score)
return
def get_question():
qs = ''
id = 1
answer = 0
points = 0
response = requests.get("http://127.0.0.1:8000/api/random/")
json_data = json.loads(response.text)
qs += " \n" # qs += "Question: \n"
qs += json_data[0]['title'] + "\n" + "\n"
for item in json_data[0]['answer']:
qs += str(id) + ". " + item['answer'] + "\n"
if item['is_correct']:
answer = id
id += 1
points = json_data[0]['points']
return(qs, answer, points)
@client.event
async def on_message(message):
channelname = client.get_channel(559320337540448258)
if message.author == client.user:
return
if message.content.startswith('!hof'):
leaderboard = get_score()
embedVar = discord.Embed(title="| *HallOfFans* |", description="", color=0x00ff00)
embedVar.add_field(name="Top of active fans: \n", value=leaderboard, inline=False)
await message.channel.send(embed=embedVar)
if message.content.startswith('!trivia'):
null = "`"
qs, answer, points = get_question()
embedVar2 = discord.Embed(title="Question is:", description=qs, color=0x353031)
await message.channel.send(embed=embedVar2)
def check(m):
#return m.author == message.author and m.content.isdigit() # answer only to the one who ask
return m.content.isdigit() == True
try:
guess = await client.wait_for('message', check=check, timeout=15.0)
except asyncio.TimeoutError:
return await message.channel.send('Time is up!')
if int(guess.content) == answer:
user = guess.author
msg = str(guess.author.name) + ', good answer! You got ' + str(points) + ' points'
await message.channel.send(msg)
update_score(user, points)
else:
await message.channel.send('Wrong answer!')
client.run('xxxxxxxxxxx)Editor is loading...