bot.game Module

This module contains classes and functions for playing the game.

bot.game.CONVERSATION_INTERRUPT_TEXT = 'Du spielst gerade ein Spiel. 🧐 Bitte antworte nur auf die Fragen und mach keine anderen Eingaben. Wenn Du das Spiel abbrechen möchtest, nutze den Befehl /spiel_abbrechen.'

Message to send, if the user tries to interrupt this conversation.

Type

str

bot.game.CONVERSATION_VALUE = 'game'

The value of context.user_data[CONVERSATION_KEY] if the user is in a game conversation.

Type

str

bot.game.GAME = 'GAME'

Identifier of the state in which the questions are asked and answered.

Type

str

bot.game.GAME_HANDLER = <telegram.ext.conversationhandler.ConversationHandler object>

Handler for playing games.

Type

telegram.ext.ConversationHandler

class bot.game.GameSettings(number_of_questions=0, multiple_choice=True, hint_attributes=<factory>, question_attributes=<factory>)

Bases: object

A simple data class for storing the game settings made by a user.

hint_attributes

Subset of the keys of components.Orchestra.DICTS_TO_ATTRS. These will be given as hints for the questions.

Type

List[str]

question_attributes

Subset of the keys of components.Orchestra.DICTS_TO_ATTRS. These will be asked for in the questions.

Type

List[str]

number_of_questions

Number of questions to ask the user.

Type

int

multiple_choice

Whether the question to be asked are multiple choice or free text.

Type

bool

score

The score for this game.

Type

components.Score

Parameters
  • hint_attributes (List[str]) – List of strings, appearing either in components.Question.SUPPORTED_ATTRIBUTES or as keys in components.Orchestra.DICTS_TO_ATTRS. These will be given as hints for the questions. May be empty, in which case all available attributes are allowed. Defaults to [].

  • question_attributes (List[str]) – List of strings, appearing either in components.Question.SUPPORTED_ATTRIBUTES or as keys in components.Orchestra.DICTS_TO_ATTRS. These will be asked for in the questions. May be empty, in which case all available attributes are allowed. Defaults to [].

  • number_of_questions (int) – Number of questions to ask the user. Defaults to 0.

  • multiple_choice (bool) – Whether the question to be asked are multiple choice or free text. Defaults to True.

bot.game.HINT_ATTRIBUTES = 'HINT_ATTRIBUTES'

Identifier of the state in which the hint attributes are selected.

Type

str

bot.game.MULTIPLE_CHOICE = 'Multiple Choice'

Identifier of the state in the type of questions is selected.

Type

str

bot.game.MULTIPLE_CHOICE_KEYBOARD = <telegram.inline.inlinekeyboardmarkup.InlineKeyboardMarkup object>

Keyboard for selection the type of questions.

Type

telegram.InlineKeyboardMarkup

bot.game.NUMBER_QUESTIONS = 'NUMBER_QUESTIONS'

Identifier of the state in which the number of question attributes is selected.

Type

str

bot.game.NUMBER_QUESTIONS_KEYBOARD = <telegram.inline.inlinekeyboardmarkup.InlineKeyboardMarkup object>

Keyboard for selection the number of questions.

Type

telegram.InlineKeyboardMarkup

bot.game.QUESTION_ATTRIBUTES = 'QUESTION_ATTRIBUTES'

Identifier of the state in which the question attributes are selected.

Type

str

class bot.game.QuestionHandler

Bases: telegram.ext.handler.Handler

A Handler that manages a collection of components.Questioner instances for each user.

callback(update, context)

Handles the update by passing it to the correct components.Questioner. Also asks the next question or, if there is none, shows the result of the game and updates the users score.

Parameters
  • update (Update) – The update.

  • context (CallbackContext) – The context as provided by the telegram.ext.Dispatcher.

Return type

Union[str, int]

check_update(update)

Checks if the update is to be handled.

Parameters

update (Update) – The update

Returns

If the update is to be handled False: Otherwise.

Return type

True

pop_questioner(user_id)

Pops questioner of a user.

Parameters

user_id (int) – The ID of the user.

Return type

Optional[Questioner]

set_questioner(user_id, questioner)

Sets a new questioner for a user.

Parameters
  • user_id (int) – The ID of the user this questioner is associated with.

  • questioner (Questioner) – The Questioner instance

Return type

None

bot.game.TEXTS: Dict[str, str] = {'HINT_ATTRIBUTES': '<b>2/4 - Hinweise</b>\n\nOkidoki. Bitte wähle nun aus, welche Eigenschaften eines AkaBlasen als Hinweis gegeben werden können. Um die Auswahl zu ändern, klicke auf die Felder.\n\nWenn Du fertig bist, klicke unten auf <i>Weiter</i>.', 'Multiple Choice': '<b>1/4 - Spielmodus</b>\n\nJuhu, ein Spiel! Bitte wähle zunächst aus, ob Du Multiple-Choice- oder Freitext-Fragen bekommst.\n\n<i>⚠️ Hinweis:</i> Den Freitext-Modus solltest Du nur wählen, wann Du schon ziemlich gut bist. Bedenke außerdem, dass der Freitext-Modus ein bisschen experimentell ist. Mehr Informationen dazu gibt es in den <a href="https://akablas.github.io/AkaNamen-Bot/faq.html#meine-freitext-antwort-wurde-als-falsch-gewertet-obwohl-da-nur-in-tippfehler-drin-war-was-ist-da-los">FAQ</a>.', 'NUMBER_QUESTIONS': '<b>4/4 - Anzahl der Fragen</b>\n\nSupidupi. Wie viele Fragen möchtest Du insgesamt erhalten?', 'QUESTION_ATTRIBUTES': '<b>3/4 - Fragen</b>\n\nAlaska. Bitte wähle nun aus, nach welchen Eigenschaften eines AkaBlasen Du gefragt wirst. Um die Auswahl zu ändern, klicke auf die Felder.\n\nWenn Du fertig bist, klicke unten auf <i>Weiter</i>.'}

Texts for the different states.

Type

Dict[str,:obj:str]

bot.game.cancel(update, context)

Cancels the game

Parameters
  • update (Update) – The update.

  • context (CallbackContext) – The context as provided by the telegram.ext.Dispatcher.

Return type

int

bot.game.hint_attributes(update, context)

Starts the conversation and asks the user to select the hint attributes. Also parses the corresponding response.

Parameters
  • update (Update) – The update.

  • context (CallbackContext) – The context as provided by the telegram.ext.Dispatcher.

Returns

If the user is not yet done selecting QUESTION_ATTRIBUTES: Else.

Return type

HINT_ATTRIBUTES

bot.game.multiple_choice(update, context)

Parses the corresponding response for the question mode.

Parameters
  • update (Update) – The update.

  • context (CallbackContext) – The context as provided by the telegram.ext.Dispatcher.

Return type

Union[str, int]

bot.game.number_questions(update, context)

Parses the corresponding response for the number of questions. Also starts the game by initializing the components.Questioner and asking the first question. If the configuration was invalid, ends the conversation.

Parameters
  • update (Update) – The update.

  • context (CallbackContext) – The context as provided by the telegram.ext.Dispatcher.

Return type

str

bot.game.question_attributes(update, context)

Parses the corresponding response for the question attributes.

Parameters
  • update (Update) – The update.

  • context (CallbackContext) – The context as provided by the telegram.ext.Dispatcher.

Returns

If the user is not yet done selecting NUMBER_QUESTIONS: Else.

Return type

QUESTION_ATTRIBUTES