TwitchIO icon indicating copy to clipboard operation
TwitchIO copied to clipboard

Tokenising multiple words to multiple arguments

Open chillymosh opened this issue 9 months ago • 1 comments

Discussed in https://github.com/PythonistaGuild/TwitchIO/discussions/449

Originally posted by DennisMinn May 13, 2024 I want to pass multiple arguments enclosed in either ' or ", but on the first argument is properly formatted, while the second argument is cut off. Is there a way to modify how the arguments is parsed?

class Bot(commands.Bot):
    def __init__(self):
        super().__init__(token='<access token>', prefix='!', initial_channels = ['<initial channel>'])

    @commands.command(name='addQA')
    async def add_qa(self, context: commands.Context, question: str, answer: str):
        print(question, answer)

Input from <initial channel> chatroom

!addQA "this is a question" "this is the answer"

Current Output

this is a question "this

Desired Output

this is a question this is the answer

chillymosh avatar May 13 '24 17:05 chillymosh

Potential fix that needs to be tested - ext.commands.stringparser.py

    def process_string(self, msg: str) -> Dict[int, str]:
        while self.count < len(msg):
            loc = msg[self.count]

            if loc == '"' and not self.ignore:
                self.ignore = True
                self.start = self.count + 1
            elif loc == '"' and self.ignore:
                self.words[self.index] = msg[self.start:self.count]
                self.index += 1
                self.ignore = False
                self.start = self.count + 1
            elif loc.isspace() and not self.ignore:
                if self.start != self.count:
                    self.words[self.index] = msg[self.start:self.count]
                    self.index += 1
                self.start = self.count + 1

            self.count += 1

        if self.start < len(msg) and not self.ignore:
            self.words[self.index] = msg[self.start:len(msg)].strip()

        return self.words

chillymosh avatar May 13 '24 17:05 chillymosh