139 lines
5.1 KiB
Python
139 lines
5.1 KiB
Python
import discord, wikipedia, json
|
|
from discord import Option
|
|
|
|
from random import randrange
|
|
#from private.config import token
|
|
|
|
|
|
#import os
|
|
#os.chdir("/opt/disbot")
|
|
|
|
bot = discord.Bot()
|
|
g_ids = [1261698917163077632]
|
|
|
|
@bot.event
|
|
async def on_ready():
|
|
print(f"We've logged in as {bot.user}.")
|
|
|
|
@bot.slash_command(guild_ids=g_ids, name = "summary", description="Returns a Wikipedia summary")
|
|
async def summary(ctx, search: Option(str, description="What do you want to get summary for?", required = True), lang: Option(str, description="Language of wiki", required = False) = "en"):
|
|
await ctx.channel.trigger_typing() # that bot is typing
|
|
|
|
try:
|
|
wikipedia.set_lang(lang)
|
|
except:
|
|
await ctx.author.send("Your chosen language doesnt have dedicated wiki")
|
|
|
|
try: # sezene sumar a odesle
|
|
thesummary = wikipedia.summary(search, chars = 1950)
|
|
try:
|
|
await ctx.respond(thesummary) # Respons je limitovano 3 vterinami, lepsi ale obcas nestihne
|
|
except:
|
|
await ctx.send(thesummary) # Send horsi, pouzije pokud nestihne response
|
|
except: # pokud nesezena musi vyhledavat
|
|
searchsummary = str(wikipedia.search(search, suggestion = True)).replace('(', '').replace(")", "").replace("'", "").replace('[', '').replace(']', '')
|
|
await ctx.author.send(f"I can't seem to find a summary for that.. Did you mean: {searchsummary}")
|
|
|
|
|
|
|
|
@bot.slash_command(guild_ids=g_ids, name = "search", description="Search Wikipedia")
|
|
async def search(ctx, search: Option(str, description = "What do you want to search for?", required = True), lang: Option(str, description="Language of wiki", required = False) = "en"):
|
|
await ctx.channel.trigger_typing() # shows that bot is typing
|
|
|
|
try:
|
|
wikipedia.set_lang(lang)
|
|
except:
|
|
await ctx.author.send("Your chosen language doesnt have dedicated wiki")
|
|
|
|
searchsearch = str(wikipedia.search(search, suggestion = True)).replace('(', '').replace(")", "").replace("'", "").replace('[', '').replace(']', '')
|
|
try:
|
|
await ctx.respond(searchsearch)
|
|
except:
|
|
await ctx.send(searchsearch)
|
|
|
|
|
|
|
|
@bot.slash_command(guild_ids=g_ids, name = "url", description="Get a URL to a page on Wikipedia")
|
|
async def url(ctx, search: Option(str, description = "What do you want to get URL for?", required = True), lang: Option(str, description="Language of wiki", required = False) = "en"):
|
|
await ctx.channel.trigger_typing() # shows that bot is typing
|
|
|
|
try:
|
|
wikipedia.set_lang(lang)
|
|
except:
|
|
await ctx.author.send("Your chosen language doesnt have dedicated wiki")
|
|
|
|
try: # pokud sezenu sumary tak sezenu link
|
|
urlsummary = wikipedia.summary(search, auto_suggest = False)
|
|
search = search.lower().replace(" ","_").replace(" ","_")
|
|
try:
|
|
await ctx.respond(f"https://{lang}.wikipedia.org/wiki/{search}")
|
|
except:
|
|
await ctx.send(f"https://{lang}.wikipedia.org/wiki/{search}")
|
|
except:
|
|
urlsearch = str(wikipedia.search(search, suggestion = True)).replace('(', '').replace(")", "").replace("'", "").replace('[', '').replace(']', '')
|
|
try:
|
|
await ctx.respond(f"https://{lang}.wikipedia.org/wiki/{urlsearch}")
|
|
except:
|
|
await ctx.send(f"https://{lang}.wikipedia.org/wiki/{urlsearch}")
|
|
|
|
|
|
|
|
@bot.slash_command(guild_ids=g_ids, name = "random", description="Returns a random Wikipedia article")
|
|
async def random(ctx, lang: Option(str, description = "Language of wiki", required = False) = "en"):
|
|
await ctx.channel.trigger_typing() # shows that bot is typing
|
|
|
|
try:
|
|
wikipedia.set_lang(lang)
|
|
except:
|
|
await ctx.author.send("Your chosen language doesnt have dedicated wiki")
|
|
|
|
ran_article = wikipedia.random().replace(" ", "_").replace(" ", "_")
|
|
|
|
try:
|
|
await ctx.respond(f"https://{lang}.wikipedia.org/wiki/{ran_article}")
|
|
except:
|
|
await ctx.send(f"https://{lang}.wikipedia.org/wiki/{ran_article}")
|
|
|
|
|
|
@bot.slash_command(guild_ids=g_ids, name = "addfact", description="Adds fun fact into pool")
|
|
async def new_joke(ctx, fact: Option(str, description = "Text of the fun fact", required = True)):
|
|
await ctx.channel.trigger_typing()
|
|
|
|
with open("funfacts.json", "r") as f:
|
|
jokes = json.load(f)
|
|
|
|
new = {}
|
|
new["author"] = str(ctx.author.id)
|
|
new["rating"] = 0
|
|
new["txt"] = str(fact)
|
|
|
|
jokes["funfacts"].append(new)
|
|
|
|
try:
|
|
await ctx.respond(f"~ moc děkuju Senpai ~ UwU")
|
|
except:
|
|
await ctx.send(f"~ moc děkuju Senpai ~ UwU")
|
|
|
|
with open("funfacts.json", "w") as f:
|
|
json.dump(jokes, f)
|
|
return True
|
|
|
|
|
|
@bot.slash_command(guild_ids=g_ids, name = "random_fact", description="Reads facts from the pool")
|
|
async def random_joke(ctx):
|
|
await ctx.channel.trigger_typing()
|
|
|
|
with open("funfacts.json", "r") as f:
|
|
jokes = json.load(f)
|
|
|
|
ran = randrange(len(jokes["funfacts"]))
|
|
print(jokes["funfacts"][ran])
|
|
|
|
#try:
|
|
# await ctx.respond(f"~ moc děkuju Senpai ~ UwU")
|
|
#except:
|
|
# await ctx.send(f"~ moc děkuju Senpai ~ UwU")
|
|
|
|
|
|
bot.run("MTMyNTk1Mzg4OTcyNzQxNDM0Mw.G2Tgo0.2OhbgaVYhys0BhxJMVgGDnG0W5qvxH-soJML3M")
|