A Python wrapper for the Dogehouse API.

Overview

Python wrapper for the dogehouse API

Installation

pip install dogehouse

Example

from dogehouse import DogeClient, event, command
from dogehouse.entities import Message


class Client(DogeClient):
    @event
    async def on_ready(self):
        print(f"Successfully connected as {self.user}!")
        await self.create_room("Hello World!")

    @command
    async def foo(self, ctx: Message):
        await self.send("bar")


if __name__ == "__main__":
    Client("YourToken", "YourRefreshToken", prefix="!").run()
Comments
  • Things we need;

    Things we need;

    So, I'm new to Github and I don't know where to type comments so I'll issue it. The things we need the most;

    1. A documentation for the module! I had to look through the source code to find what I need
    2. Functions that can do these things: "Make Mod", "Make Room Admin", "Ban from Chat", "Ban from Room"
    enhancement 
    opened by asxlvm 16
  • Can't install using pip

    Can't install using pip

        ERROR: Command errored out with exit status 1:
         command: 'c:\users\notmm\appdata\local\programs\python\python39\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\notmm\\AppData\\Local\\Temp\\pip-install-fi1zbmzm\\dogehouse_737517342ab24e0db7771551e779c185\\setup.py'"'"'; __file__='"'"'C:\\Users\\notmm\\AppData\\Local\\Temp\\pip-install-fi1zbmzm\\dogehouse_737517342ab24e0db7771551e779c185\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\notmm\AppData\Local\Temp\pip-pip-egg-info-k9zoptcf'
             cwd: C:\Users\notmm\AppData\Local\Temp\pip-install-fi1zbmzm\dogehouse_737517342ab24e0db7771551e779c185\
        Complete output (5 lines):
        Traceback (most recent call last):
          File "<string>", line 1, in <module>
            from dogehouse import __version__
        ModuleNotFoundError: No module named 'dogehouse'
        ----------------------------------------
    WARNING: Discarding https://files.pythonhosted.org/packages/da/7e/19b4411d56da680704ab5c38dff93a3ef48c9bb4da844ce205ee96b89e37/dogehouse-0.0.0.tar.gz#sha256=8a8527596a5dcbe143f23eeb2da0b62632703c1abb274f3d75eb3b727db55044 (from https://pypi.org/simple/dogehouse/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
    ERROR: Could not find a version that satisfies the requirement dogehouse
    ERROR: No matching distribution found for dogehouse```
    bug 
    opened by mmattbtw 7
  • Default set to None doesn't work

    Default set to None doesn't work

    Hey so, I'm not sure if this is my problem but;

      @command
      async def covid(self, ctx: Message, *, country = None):
        if country == None:
          await self.send("You have to specify a country to see their COVID stats! Example: d!covid Czechia")
          return
        else:
          pass
        
        cases = Covid().get_status_by_country_name(country.lower())
        
        region = cases["country"]
        confirmed = cases["confirmed"]
        active = cases["active"]
        deaths = cases["deaths"]
        recovered = cases["recovered"]
        
        await self.send(f"COVID stats for {region} • Confirmed Cases: {confirmed} • Active Cases: {active} • Deaths: {deaths} • Recovered: {recovered}")
    

    This is my command, it works normally but when the user doesn't specify the country, it should send the message "You have to specify a country..." but it doesn't, this works on Discord.py, not sure why it doesn't here! :D

    bug 
    opened by asxlvm 6
  • Default values don't work

    Default values don't work

    IMG_20210326_172512

    IMG_20210326_172445

    This is the code that I'm using;

      @command
      async def pp(self, ctx: Message, *, user: User = None):
        print(user)
        if user == None:
          user2 = ctx.author.mention
          print(user)
        else:
          user2 = user.mention
        pps = [ I don't wanna make the code long so I'm not including the list ]
        
        pprnd = random.choice(pps)
          
        await self.send(f"{user2}'s pp: ㅤㅤㅤ{pprnd}")
    

    Before the update, the tagging worked but obviously the ctx.author didn't, now it's vice-versa.

    invalid 
    opened by asxlvm 5
  • on_speaker_request event doesn't work?

    on_speaker_request event doesn't work?

    This is my code, am I wrong??

       	 @event
         async def on_speaker_request(self, user: User):
             await self.send(f"🎤 Welcome to the stage - {user.username}")
             await self.add_speaker(user)
    
    invalid 
    opened by mmattbtw 4
  • Convertors either don't work or I can't work with them

    Convertors either don't work or I can't work with them

    Hey, I'll leave the code I'm using at the bottom of the issue as it's long, I can't seem to get convertors working again, tell me what I'm doing wrong please

    File "main.py", line 121, in testbattle
        if user.id == ctx.author.id:
    AttributeError: 'str' object has no attribute 'id'
    

    Code:

    	@command
    	async def testbattle(self, ctx: Message, *, user: BaseUser):
    		if user == None:
    			return await self.send(message=f"{ctx.author.mention} Missing Required Argument - Usage: d!battle <user> • Example: d!fight @hudson", whisper=[ctx.author.id])
    		if user.id == ctx.author.id:
    			return await self.send(message=f"{ctx.author.mention} Bad Argument (You cannot battle yourself) - Usage: d!battle <user> • Example: d!fight @hudson", whisper=[ctx.author.id])
    		m_author_id = ctx.author.id
    		m_user_id = user.id
    		m_author_mention = ctx.author.mention
    		m_user_mention = user.mention
    		turn = random.choice([m_author_id, m_user_id])
    		currenthpauth = 100
    		currenthpuser = 100
    		players = [m_author_id, m_user_id]
    		moves = 0
    		try:
    			while True:
    				if turn == m_author_id:
    					currentturnid = m_author_id
    					currentturnmention = m_author_mention
    					currentturnhp = currenthpauth
    					notturnid = m_user_id
    					notturnmention = m_user_mention
    					notturnhp = currenthpuser
    				else:
    					currentturnid = m_user_id
    					currentturnmention = m_user_mention
    					currentturnhp = currenthpuser
    					notturnid = m_author_id
    					notturnmention = m_author_mention
    					notturnhp = currenthpauth
    				await ctx.send(message=f"{currentturnmention}, what will you do now? • OPTIONS: Fight, Defense, Surrender • Your HP: {currentturnhp} HP, Your opponent's HP: {notturnhp} HP", whisper=currentturnid)
    				msg = await self.wait_for(event=message, check=lambda message: msg.author.id == currentturnid)
    				msgcont = msg.lower()
    				if msgcont == 'fight':
    					damage = random.randint(1,35)
    					if damage == 35:
    						damage = random.randint(35,75)
    						dmgtext = f"{currentturnmention} made a critical hit of {damage} HP! :Pog:"
    					else:
    						dmgtext = f"{currentturnmention} chose violence. Damage of {damage} HP was given to {notturnmention}!"
    					notturnhp -= damage
    					await self.send(message=dmgtext, whisper=players)
    					moves += 1
    					if turn == m_author_id:
    						turn = m_user_id
    					else:
    						turn = m_author_id
    						
    				elif msgcont == 'defense':
    					healedhp = random.randint(5, 20)
    					currentturnhp += healedhp
    					if currentturnhp >= 100:
    						currentturnhp = 100
    					deftext = f"{currentturnmention} healed himself for {currentturnhp} HP!"
    					await self.send(message=deftext, whisper=players)
    					if turn == m_author_id:
    						turn = m_user_id
    					else:
    						turn = m_author_id
    				elif msgcont == 'surrender':
    					await self.send(message=f"{currentturnmention} surrendered S :OMEGALUL:  BAD", whisper=players)
    					return False
    			
    			if currenthpauth <= 0 or currenthpuser <= 0:
    				if currenthpauth > currenthpuser:
    					await self.send(f"{m_author_mention} has won against {m_user_mention} in {moves}! His remaining HP was {currenthpauth} HP.")
    					return False
    				elif currenthpuser > currenthpauth:
    					await self.send(f"{m_user_mention} has won against {m_author_mention} in {moves}! His remaining HP was {currenthpuser} HP.")
    					return False
    			else:
    				pass
    		except Exception as e:
    			print(e)
    
    invalid 
    opened by asxlvm 3
  • How could I use self.rooms?

    How could I use self.rooms?

    Hey! How would I get info from this? Because when I call self.rooms, I receive this biiiiig list and I can't seem to get stuff from it

    [<Room id=ec61ca17-e38e-4c7... creator_id=f955b622-9a34-43e... name=Undead computer s... description= created_at=2021-04-05 09:16:48.457705+00:00 is_private=False count=18 users=[<UserPreview id=f955b622-9a34-43e... displayname=Null num_followers=158>, <UserPreview id=1755d9d9-2133-4fa... displayname=Bitdefender Antiv... num_followers=105>, <UserPreview id=7b0136c4-45ca-4ab... displayname=James num_followers=86>, <UserPreview id=f4c6eadb-9062-486... displayname=Honbra num_followers=61>, <UserPreview id=2fbb1c5d-2ce3-44e... displayname=Alt num_followers=39>, <UserPreview id=05bb4c2c-d321-4d2... displayname=DodgyCoin Bot num_followers=30>, <UserPreview id=5a050137-adec-4ce... displayname=Amine Maminou num_followers=23>, <UserPreview id=de27447e-a633-484... displayname=Asylum num_followers=19>, <UserPreview id=ab2e518f-3e63-45f... displayname=DogeBoss 🐶 num_followers=13>, <UserPreview id=77e4fb39-cc1b-4fd... displayname=Mubarak Showole num_followers=9>]>, <Room id=91b403ea-3615-481... creator_id=21b94c3c-c39a-4b5... name=AngularHaters description= created_at=2021-04-05 10:00:33.718604+00:00 is_private=False count=5 users=[<UserPreview id=21b94c3c-c39a-4b5... displayname=Jay Prakash Pathak num_followers=20>, <UserPreview id=17c0b799-c8bf-4ba... displayname=zrv num_followers=12>, <UserPreview id=6474331d-7359-406... displayname=dayum son num_followers=2>, <UserPreview id=6da6ec1e-a375-437... displayname=Rohin Awale num_followers=0>, <UserPreview id=34b54f15-d69d-4fc... displayname=Doob num_followers=0>]>, <Room id=cbcb2c9d-d982-417... creator_id=1d8a143c-22f2-4f3... name=Jerby Room  description=27 daily prayers ... created_at=2021-03-31 18:31:51.903058+00:00 is_private=False count=4 users=[<UserPreview id=e2f77c8d-afc5-490... displayname=Erwin DePanda num_followers=12>, <UserPreview id=1d8a143c-22f2-4f3... displayname=LJL num_followers=7>, <UserPreview id=d8fc5bbf-0ad3-4d2... displayname=Crashloll num_followers=6>, <UserPreview id=7f89041c-ac7d-469... displayname=Cengiz Gürtusgil num_followers=0>]>, <Room id=3fc0fe65-0b44-46f... creator_id=e44ad29a-536e-491... name=idk description= created_at=2021-04-04 21:06:15.910658+00:00 is_private=False count=3 users=[<UserPreview id=e44ad29a-536e-491... displayname=HoloPanio num_followers=108>, <UserPreview id=4aea3675-1b08-4e6... displayname=Novice Doge num_followers=10>, <UserPreview id=7c0059ff-f506-43f... displayname=Dave num_followers=0>]>, <Room id=c761eaf1-124b-47b... creator_id=704d82a0-ff97-40a... name=DMTK description= created_at=2021-04-05 09:46:54.172012+00:00 is_private=False count=2 users=[<UserPreview id=704d82a0-ff97-40a... displayname=DrFolleDinde num_followers=7>, <UserPreview id=063b3450-c06d-458... displayname=Novice Doge num_followers=2>]>, <Room id=2d7d56c4-7366-42d... creator_id=8b195657-f94f-45c... name=DoobHouse! description=GitHub.com/DoobDe... created_at=2021-04-04 17:38:38.553335+00:00 is_private=False count=1 users=[<UserPreview id=8b195657-f94f-45c... displayname=Doob num_followers=4>]>, <Room id=345e228b-ecff-4c9... creator_id=1b5cd5cf-a858-4c2... name=1 on 1 AI Chat description=The Bot will repl... created_at=2021-04-04 23:05:30.232612+00:00 is_private=False count=1 users=[<UserPreview id=1b5cd5cf-a858-4c2... displayname=daBOT num_followers=7>]>]
    

    I tried self.rooms.name, self.rooms['name']

    Still doesn't work

    I'm trying to make a CLI

    question 
    opened by asxlvm 2
  • BaseUser doesn't trigger if the argument ends with a whitespace

    BaseUser doesn't trigger if the argument ends with a whitespace

    So, DogeHouse doesn't remove white spaces when a message has been sent with a space at the end, ex.; d!fight @asylum , it wouldn't trigger because of the whitespace, so you'd have to remove the whitespace at the end for it to work.

    I use BaseUser as my user arg. and I'm not sure if this happens with any other arg or if there's a way to fix that straight in your library or do I have to make an if endswith check in my code?

    bug 
    opened by asxlvm 2
  • DogeHouse.py bot low uptime

    DogeHouse.py bot low uptime

    Hey! Today I checked UptimeRobot to see stats on the Uptime of my Discord bots and my Dogehouse bot, I saw that the Dogehouse bot had a big difference in uptime IMG_20210330_111126

    Does that have something to do with the loop (that it's set to 30 minutes or smth) or is it just the socket disconnecting because it's not receiving anything?

    invalid 
    opened by asxlvm 2
  • NotEnoughArguments exception not called

    NotEnoughArguments exception not called

    Describe the bug The NotEnoughArguments error doesn't get called

    To Reproduce Steps to reproduce the behavior:

    1. Try the command and event below without any arguments:
    2. The output is tuple index out of range instead of NotEnoughArguments

    Expected behavior The error should return NotEnoughArguments instead of tuple index out of range

    Code

    	@event
    	async def on_error(self, error):
    		print(error)
    		if isinstance(error, dogehouse.exceptions.CommandNotFound):
    			print("not found")
    		elif isinstance(error, dogehouse.exceptions.NotEnoughArguments):
    			print("yisiso")
    		else:
    			print("no")
    
    	@command
    	async def testerror(self, ctx: Context, tellemes):
    		await self.send(tellemes)
    

    Screenshots IMG_20210420_102559

    Desktop (please complete the following information):

    • OS: [linux]
    • Browser [replit ide bruh?]
    • Version [the newest i guess]
    • Is this stuff really needed? I don't think OS and browser matter really

    Additional context no

    bug 
    opened by asxlvm 1
  • TypeError: object of type 'bool' has no len()

    TypeError: object of type 'bool' has no len()

    Describe the bug When receiving a User's permissions, the represents function doesn't cast non-string objects to a string, instead, it casts string objects to a string, meaning the object will always be a non-string, causing an error.

    To Reproduce Steps to reproduce the behavior:

    1. Make a simple dogehouse bot
    2. Call __repr__ on User.room_permissions
    3. See error

    And/or code:

    from dogehouse import DogeClient, event, command
    from dogehouse.entities import User
    
    class Client(DogeClient):
        @event
        async def on_ready(self):
            pass
    
        @command
        async def test(self, ctx):
            user = await self.fetch_user(ctx.author.id)
            print(user.room_permissions.__repr__()) # You can exclude the __repr__ if you want
    

    Expected behavior A string printed in stdout, something along the lines of <Permission asked_to_speak='False' is_mod='False' is_admin='True' is_speaker='False'>

    Screenshots Screenshot from 2021-04-18 11-51-21

    Desktop (please complete the following information):

    • OS: Manjaro Linux x86_64
    • Browser: Firefox
    • Version: 5.9.16-1-MANJARO

    Additional context You can solve this issue by swapping item and f"'{item}'" in line 52 of the /represents/representation.py file

    bug 
    opened by saihnii4 1
Releases(2.1.4)
Owner
Arthur
17 year old GO-AO informatics student
Arthur
PlexAutoSkip - Automatically skip content in Plex

PlexAutoSkip Automatically skip tagged content in Plex A background python scrip

Michael Higgins 97 Dec 21, 2022
Image captioning service for healthcare domains in Vietnamese using VLP

Image captioning service for healthcare domains in Vietnamese using VLP This service is a web service that provides image captioning services for heal

CS-UIT AI Club 2 Nov 04, 2021
Fortnite Dumper for anyone's Save the World profiles.

Anyone's Fortnite Save the World Profile Dumper This program allows you to dump anyone's Fortnite Save the World Profiles. How to use it? After starti

PRO100KatYT 6 Apr 13, 2022
Presentation and code files for the talk at PyCon Indonesia

pycon-indonesia Presentation and code files for the talk at PyCon Indonesia. Files used for the PyCon Indonesia presentation. [Directory Includes:] Be

Neeraj Pandey 2 Dec 04, 2021
A anti-repostbot script for reddit, runs u/ThisIsARepostBotBot

ThisIsARepostBotBot So you found a repost bot, now what? This is a bot to reply to all posts of a repost bot with a message urging users to report and

3 May 23, 2022
Userbot untuk memutar video dan lagu di vcg/os

Userbot untuk memutar video dan lagu di vcg/os

FJ_GAMING 2 Nov 13, 2021
Male' Map Telegram Bot

Male' Map TelegramBot A simple TelegramBot to fetch residential addresses in Male', Maldives. The bot can be queried inline or directly. sample .env f

Naail Abdul Rahman 12 Nov 25, 2022
Streaming Finance Data with AWS Lambda

A data pipeline consisting of an AWS lambda function reading data from yfinance API, an AWS Kinesis stream to receive & store data in S3 buckets and AWS Glue crawler & Athena to run SQL queries.

Aarif Munwar Jahan 4 Aug 30, 2022
📷 Instagram Bot - Tool for automated Instagram interactions

InstaPy Tooling that automates your social media interactions to “farm” Likes, Comments, and Followers on Instagram Implemented in Python using the Se

Tim Großmann 13.5k Dec 01, 2021
Python library to connect to Firebots API

This is a firebot library to connect to Firebots API. https://firebot.app/ From Firebots Website: "Firebot is a fully featured open-source bot that c

1 Jan 08, 2022
This is telegram bot to generate string session for using user bots. You can see live bot in https://telegram.dog/string_session_Nsbot

TG String Session Generate Pyrogram String Session Using this bot. Demo Bot: Configs: API_HASH Get from Here. API_ID Get from Here. BOT_TOKEN Telegram

Anonymous 27 Oct 28, 2022
Small cloudfoundry client implemented in python

Cloudfoundry python client The cf-python-client repo contains a Python client library for Cloud Foundry. Installing Supported versions warning: Starti

Cloud Foundry Community 50 Sep 08, 2022
A discord webhook client written in Python.

DiscordWebhook A discord webhook client written in Python. Installation pip install webhook-client Example from webhook_client import WebhookClient, E

Elijah 4 Nov 28, 2022
A Python API For Questionnaire

Инструкция по разворачиванию приложения Окружение проекта: python 3.8 Django 2.2.10 djangorestframework Склонируйте репозиторий с помощью git: git clo

2 Feb 14, 2022
Discord-RAID-Tool - Hacks/tools

How to use Python must be installed run install-config If you dont have python installed, download python 3.7.6 and make sure you click on the 'ADD TO

1 Jan 01, 2022
ShoukoKomiRobot - An anime themed telegram bot that can convert telegram media

ShoukoKomiRobot • 𝕎𝕣𝕚𝕥𝕥𝕖𝕟 𝕀𝕟 Python3 • 𝕃𝕚𝕓𝕣𝕒𝕣𝕪 𝕌𝕤𝕖𝕕 Pyrogram

25 Aug 14, 2022
Powerful Telegram Maintained UserBot in Telethon

Fire-X UserBot The Awaited Bot Fire-X userbot The Most Powerful Telegram Userbot. This Userbot is Safe to use in Your Telegram Account. It is not like

22 Oct 21, 2022
UP It is a script to notify of a new update of your project, done in python and using GitHub, to modify the versions to notify users.

UP-Updater UP It is a script to notify of a new update of your project, done in python and using GitHub, to modify the versions to notify users. Requi

Made in 4 Oct 28, 2021
Bot developed in python, 100% open-source, compatible with Windows and Linux.

Bombcrypto Bot [Family JOW] Bot desenvolvido em python, 100% do código é aberto, para aqueles que tenham conhecimento validarem que não existe nenhum

Renato Maia 71 Dec 20, 2022
A tiktok autoclaimer/sniper used to get og/rare usernames on tiktok.com

TikTok Autoclaimer A tiktok autoclaimer/sniper used to get og/rare usernames on tiktok.com Report Bug · Request Feature Features Asynchronous User fri

dropout 24 Dec 08, 2022