import discord, wikipedia, json import asyncio from random import randrange from discord import Option #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["upvotes"] = 0 new["downvotes"] = 0 new["visited"] = 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 = "funfact", description="Reads facts from the pool") async def funfact(ctx): await ctx.channel.trigger_typing() with open("funfacts.json", "r") as f: jokes = json.load(f) ran = randrange(len(jokes["funfacts"])) try: await ctx.respond(f"Jednou jsem slyšela že: {jokes['funfacts'][ran]['txt']}") except: await ctx.send(f"Jednou jsem slyšela že: {jokes['funfacts'][ran]['txt']}") msg = await ctx.send(f"Co myslíš?") jokes["funfacts"][ran]["visited"] =+ 1 love = "" await msg.add_reaction("\U0001F44D") await msg.add_reaction("\U0001F44E") await asyncio.sleep(300) msg_cached = discord.utils.get(bot.cached_messages, id=msg.id) for emo in msg_cached.reactions: if emo.emoji == "👍": jokes["funfacts"][ran]["upvotes"]+= emo.count - 1 elif emo.emoji == "👎": jokes["funfacts"][ran]["downvotes"]+= emo.count - 1 elif emo.emoji == "🫀": love = ', já Vás mám taky ráda 🫀.' await msg.edit(content=f"Děkuju za ohodnoceni. {love}") await msg.remove_reaction("\U0001F44D", msg.author) await msg.remove_reaction("\U0001F44E", msg.author) with open("funfacts.json", "w") as f: json.dump(jokes, f) return True bot.run("MTMyNTk1Mzg4OTcyNzQxNDM0Mw.G2Tgo0.2OhbgaVYhys0BhxJMVgGDnG0W5qvxH-soJML3M")