āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻāĻā§āĻ°āĻāĻŋ āĻĒāĻĄāĻŧā§ āĻĨāĻžāĻā§āĻ¨
āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§, āĻāĻŽāĻ°āĻž āĻļāĻŋāĻāĻŦ āĻā§āĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻŦāĻ āĻ˛āĻŋāĻāĻ¤ā§ āĻšāĻ¯āĻŧ āĻ¯āĻž āĻāĻāĻāĻŋ āĻ§āĻžāĻ°āĻžāĻŦāĻžāĻšāĻŋāĻ āĻ¸āĻāĻ˛āĻžāĻĒ āĻŦāĻāĻžāĻ¯āĻŧ āĻ°āĻžāĻāĻŦā§āĨ¤ āĻ¸ā§āĻā§āĻ˛ā§. āĻŦāĻ āĻāĻĒāĻ¨āĻžāĻā§ āĻĒā§āĻ°āĻļā§āĻ¨ āĻāĻŋāĻā§āĻāĻžāĻ¸āĻž āĻāĻ°āĻŦā§ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻŋāĻā§ āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻŦā§āĨ¤ āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°āĻž āĻĄā§āĻāĻžāĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§, āĻŦāĻ āĻāĻŋāĻā§ āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻŦā§āĨ¤
āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻāĻŽāĻ°āĻž āĻļāĻŋāĻāĻŦ āĻāĻŋāĻāĻžāĻŦā§ āĻŦāĻ āĻāĻ° āĻšā§āĻĄā§āĻ° āĻ¨āĻŋāĻā§ āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ, āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§ āĻāĻāĻŋ āĻšāĻŦā§ SQLite, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻ
āĻ¨ā§āĻ¯ āĻā§āĻ¨ DBMS āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻŽāĻŋ R āĻāĻžāĻˇāĻžāĻ¯āĻŧ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻ¨ā§āĻāĻžāĻ°āĻ
ā§āĻ¯āĻžāĻā§āĻ āĻāĻ°āĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§ āĻāĻ°āĻ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ˛āĻŋāĻā§āĻāĻŋ
"R āĻ¤ā§ āĻā§āĻ˛āĻŋāĻā§āĻ°āĻžāĻŽ āĻŦāĻ āĻ˛ā§āĻāĻž" āĻ¸āĻŋāĻ°āĻŋāĻā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§
āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻŦāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻā§āĻ˛āĻŋāĻā§āĻ°āĻžāĻŽā§ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ āĻŦāĻā§ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻŦāĻ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨ āĻā§āĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻŦāĻā§ āĻā§āĻŦā§āĻ°ā§āĻĄ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻŦā§āĻ¨ āĻŦāĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖ, āĻ¯ā§āĻā§āĻ¤āĻŋāĻ āĻāĻĨā§āĻĒāĻāĻĨāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž
āĻ¸āĻ¨ā§āĻ¤ā§āĻˇā§āĻ
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻĄā§āĻāĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖā§ āĻāĻā§āĻ°āĻšā§ āĻšāĻ¨ āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻŋ āĻāĻŽāĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋ āĻāĻā§āĻ°āĻšā§ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
āĻā§āĻŽāĻŋāĻāĻž āĻŦāĻ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦāĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻāĻžāĻ āĻžāĻŽā§ āĻŦāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨ āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻā§āĻā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĢāĻžāĻāĻļāĻ¨ āĻ˛ā§āĻāĻž āĻŦāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻŦāĻ āĻ˛āĻā§āĻ āĻā§āĻĄ āĻāĻĒāĻ¸āĻāĻšāĻžāĻ°
āĻā§āĻŽāĻŋāĻāĻž
āĻŦāĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻ āĻĨā§āĻā§ āĻĄā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻā§āĻ¨āĻ āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻžāĻā§ āĻ¸āĻāĻ˛āĻžāĻĒā§āĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ āĻŦāĻ¸ā§āĻĨāĻž āĻ°ā§āĻāĻ°ā§āĻĄ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻ°ā§āĻŦā§āĻ¤ā§āĻ¤āĻŽ āĻāĻĒāĻžāĻ¯āĻŧ āĻšāĻ˛ āĻāĻŋāĻā§ āĻ§āĻ°āĻŖā§āĻ° āĻāĻŽāĻŦā§āĻĄā§āĻĄ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž, āĻ¯ā§āĻŽāĻ¨ SQLiteāĨ¤
āĻ¸ā§āĻā§āĻ˛ā§. āĻ¯ā§āĻā§āĻ¤āĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ°ā§āĻĒ āĻšāĻŦā§āĨ¤ āĻāĻŽāĻ°āĻž āĻŦāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻā§ āĻŦāĻ˛āĻŋ, āĻāĻŦāĻ āĻŦāĻāĻāĻŋ āĻā§āĻ°āĻŽāĻžāĻ¨ā§āĻ¸āĻžāĻ°ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻ āĻĨā§āĻā§ āĻāĻŋāĻā§ āĻ¤āĻĨā§āĻ¯ā§āĻ° āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ°ā§ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ§āĻžāĻĒā§ āĻāĻāĻŋ āĻāĻ āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ°āĻŦā§āĻļā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒā§āĻā§āĻˇāĻž āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻŽāĻ°āĻž āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ¸āĻšāĻ āĻ¸āĻŽā§āĻāĻžāĻŦā§āĻ¯ āĻŦāĻ āĻ˛āĻŋāĻāĻŦ, āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻžāĻŽ āĻāĻŋāĻā§āĻāĻžāĻ¸āĻž āĻāĻ°āĻŦā§, āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻĒāĻ¨āĻžāĻ° āĻŦāĻ¯āĻŧāĻ¸ āĻāĻŦāĻ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻĄā§āĻāĻž āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻŦā§āĨ¤ āĻŦāĻ¯āĻŧāĻ¸ āĻāĻŋāĻā§āĻāĻžāĻ¸āĻž āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŦā§ āĻ¯ā§ āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°āĻž āĻĄā§āĻāĻž āĻāĻāĻāĻŋ āĻ¸āĻāĻā§āĻ¯āĻž āĻāĻŦāĻ āĻĒāĻžāĻ ā§āĻ¯ āĻ¨āĻ¯āĻŧāĨ¤
āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻ¸āĻšāĻ āĻāĻĨā§āĻĒāĻāĻĨāĻ¨ā§āĻ° āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¤āĻŋāĻ¨āĻāĻŋ āĻ āĻŦāĻ¸ā§āĻĨāĻž āĻĨāĻžāĻāĻŦā§:
- start āĻšāĻ˛ āĻŦāĻā§āĻ° āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻ āĻŦāĻ¸ā§āĻĨāĻž, āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻ āĻĨā§āĻā§ āĻā§āĻ¨ā§ āĻ¤āĻĨā§āĻ¯ āĻāĻļāĻž āĻāĻ°ā§ āĻ¨āĻž
- wait_name - āĻ¯ā§ āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻŦāĻ āĻāĻāĻāĻŋ āĻ¨āĻžāĻŽ āĻ˛ā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒā§āĻā§āĻˇāĻž āĻāĻ°ā§
- wait_age āĻšāĻ˛ āĻ¸ā§āĻ āĻ āĻŦāĻ¸ā§āĻĨāĻž āĻ¯ā§āĻāĻžāĻ¨ā§ āĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻŦāĻ¯āĻŧāĻ¸ āĻ˛ā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒā§āĻā§āĻˇāĻž āĻāĻ°ā§, āĻĒā§āĻ°ā§āĻŖ āĻŦāĻāĻ°ā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻžāĨ¤
āĻŦāĻ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž
āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻŽāĻ°āĻž āĻ§āĻžāĻĒā§ āĻ§āĻžāĻĒā§ āĻāĻāĻāĻŋ āĻŦāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŦ; āĻĒā§āĻ°ā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻžāĻāĻ¤āĻāĻžāĻŦā§ āĻ¨āĻŋāĻŽā§āĻ¨āĻ°ā§āĻĒ āĻāĻŋāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§:
- āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻŦāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻāĻŋāĻā§ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻŦāĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻŦāĻ āĻā§āĻā§āĻ¨, āĻāĻŦāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻĒāĻĨāĨ¤
- āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻ¨āĻāĻžāĻ¯āĻŧāĻ°āĻ¨āĻŽā§āĻ¨ā§āĻ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻŦāĻ āĻ¸āĻš āĻĒā§āĻ°āĻā§āĻā§āĻā§āĻ° āĻĒāĻĨ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
- āĻāĻŽāĻ°āĻž āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¨āĻŋāĻā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ, āĻāĻŦāĻ āĻ āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ āĻ¯āĻžāĻ¤ā§ āĻŦāĻ āĻāĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
- āĻāĻŽāĻ°āĻž āĻŦāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ˛āĻŋāĻāĻŋ, āĻ¯ā§āĻŽāĻ¨ āĻĢāĻžāĻāĻļāĻ¨ āĻāĻāĻŋ āĻ¸āĻā§āĻāĻžāĻ˛āĻ¨ āĻāĻ°āĻž āĻšāĻŦā§.
- āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻā§āĻā§āĨ¤ āĻ¯āĻžāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§ āĻŦāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻŦā§, āĻ¯āĻž āĻā§āĻ¯āĻžāĻā§āĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§āĨ¤
- āĻāĻŽāĻ°āĻž āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻ¯ā§āĻ āĻāĻ°āĻŋ āĻ¯āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻŦāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻāĻŦāĻ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻā§āĻ˛āĻŋāĻā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻŦā§āĨ¤
- āĻāĻ° āĻŦāĻ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻ¯āĻžāĻ.
āĻŦāĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻāĻžāĻ āĻžāĻŽā§
āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻŦāĻā§āĻ° āĻā§āĻĄ āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻā§ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻžāĻ āĻžāĻŽā§āĻ¤ā§ āĻāĻžāĻ āĻāĻ°āĻŦāĨ¤
- āĻŦāĻ.āĻāĻ° â āĻāĻŽāĻžāĻĻā§āĻ° āĻŦāĻā§āĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻā§āĻĄ
- db_bot_function.R â āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĢāĻžāĻāĻļāĻ¨ āĻ¸āĻš āĻā§āĻĄā§āĻ° āĻāĻāĻāĻŋ āĻŦā§āĻ˛āĻ
- āĻŦāĻ_āĻĒāĻĻā§āĻ§āĻ¤āĻŋ.āĻāĻ° - āĻŦāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻā§āĻĄ
- āĻŦāĻžāĻ°ā§āĻ¤āĻž_āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°.āĻāĻ° - āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°
- āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°.āĻāĻ° - āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°
- config.cfg - āĻŦāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨
- create_db_data.sql â āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻā§āĻ¯āĻžāĻ āĻĄā§āĻāĻž āĻ¸āĻš āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ SQL āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ
- create_db_state.sql â āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻā§āĻ¯āĻžāĻ āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ° āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ SQL āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ
- bot.db - āĻŦāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸
āĻāĻĒāĻ¨āĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻŦāĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻŦāĻž
āĻŦāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨
āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ
[bot_settings]
bot_token=ĐĸĐĐĐĐ_ĐĐШĐĐĐ_ĐĐĐĸĐ
[db_settings]
db_path=C:/ĐĐŖĐĸĐŦ/Đ/ĐĐĐĐĐ/ĐĐ ĐĐĐĐĸĐ/bot.db
āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻŦāĻ āĻā§āĻā§āĻ¨ āĻāĻŦāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻĒāĻĨ āĻ˛āĻŋāĻāĻŋ, āĻ¯ā§āĻŽāĻ¨ bot.db āĻĢāĻžāĻāĻ˛ā§; āĻāĻŽāĻ°āĻž āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ§āĻžāĻĒā§ āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻ¨āĻŋāĻā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŦāĨ¤
āĻāĻ°āĻ āĻāĻāĻŋāĻ˛ āĻŦāĻāĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻŋ āĻāĻ°āĻ āĻāĻāĻŋāĻ˛ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻāĻāĻžāĻĄāĻŧāĻž, āĻāĻāĻāĻŋ ini āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ˛ā§āĻāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻ, āĻāĻĒāĻ¨āĻŋ JSON āĻ¸āĻš āĻ āĻ¨ā§āĻ¯ āĻā§āĻ¨āĻ āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨
āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒāĻŋāĻ¸āĻŋāĻ¤ā§, āĻŦāĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°āĻāĻŋ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻ¤ā§ āĻāĻŦāĻ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĄā§āĻ°āĻžāĻāĻā§ āĻ
āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¤āĻžāĻ āĻā§āĻĄāĻāĻŋāĻ¤ā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°ā§āĻ° āĻĒāĻĨāĻāĻŋ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ TG_BOT_PATH
.
āĻāĻāĻāĻŋ āĻāĻ¨āĻāĻžāĻ¯āĻŧāĻ°āĻ¨āĻŽā§āĻ¨ā§āĻ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻĒāĻžāĻ¯āĻŧ āĻ°āĻ¯āĻŧā§āĻā§, āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ¸āĻšāĻ āĻšāĻ˛ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻ˛ā§ āĻ˛ā§āĻāĻž āĻ°ā§āĻ¨āĻāĻŋāĻ°āĻ¨.
āĻāĻĒāĻ¨āĻŋ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻ¤ā§āĻ°āĻŋ āĻŦāĻž āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ file.edit(path.expand(file.path("~", ".Renviron")))
. āĻāĻāĻŋ āĻāĻžāĻ˛āĻžāĻ¨ āĻāĻŦāĻ āĻĢāĻžāĻāĻ˛āĻāĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻ˛āĻžāĻāĻ¨ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°ā§āĻ¨:
TG_BOT_PATH=C:/ĐĐŖĐĸĐŦ/Đ/ĐĐШĐĐĐŖ/ĐĐ ĐĐĐĐĸĐŖ
āĻāĻ°āĻĒāĻ° āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻ¸ā§āĻ āĻāĻ°ā§āĻ¨ āĻ°ā§āĻ¨āĻāĻŋāĻ°āĻ¨ āĻāĻŦāĻ RStudio āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĻ¨āĨ¤
āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ§āĻžāĻĒ āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ. āĻāĻŽāĻžāĻĻā§āĻ° 2āĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻŦā§:
- chat_data â āĻĄā§āĻāĻž āĻ¯āĻž āĻŦāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻāĻžāĻ āĻĨā§āĻā§ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ°ā§āĻāĻŋāĻ˛
- chat_state â āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻ¯āĻžāĻā§āĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ āĻŦāĻ¸ā§āĻĨāĻž
āĻāĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ SQL āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ āĻā§āĻŦāĻŋāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
CREATE TABLE chat_data (
chat_id BIGINT PRIMARY KEY
UNIQUE,
name TEXT,
age INTEGER
);
CREATE TABLE chat_state (
chat_id BIGINT PRIMARY KEY
UNIQUE,
state TEXT
);
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻĨā§āĻā§ āĻŦāĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°ā§āĻ¨
# ĐĄĐēŅиĐŋŅ ŅОСдаĐŊиŅ йаСŅ Đ´Đ°ĐŊĐŊŅŅ
library(DBI) # иĐŊŅĐĩŅŅĐĩĐšŅ Đ´ĐģŅ ŅайОŅŅ Ņ ĐĄĐŖĐĐ
library(configr) # ŅŅĐĩĐŊиĐĩ ĐēĐžĐŊŅиĐŗĐ°
library(readr) # ŅŅĐĩĐŊиĐĩ ŅĐĩĐēŅŅОвŅŅ
SQL ŅĐ°ĐšĐģОв
library(RSQLite) # Đ´ŅаКвĐĩŅ Đ´ĐģŅ ĐŋОдĐēĐģŅŅĐĩĐŊиŅ Đē SQLite
# диŅĐĩĐēŅĐžŅиŅ ĐŋŅĐžĐĩĐēŅĐ°
setwd(Sys.getenv('TG_BOT_PATH'))
# ŅŅĐĩĐŊиĐĩ ĐēĐžĐŊŅиĐŗĐ°
cfg <- read.config('config.cfg')
# ĐŋОдĐēĐģŅŅĐĩĐŊиĐĩ Đē SQLite
con <- dbConnect(SQLite(), cfg$db_settings$db_path)
# ХОСдаĐŊиĐĩ ŅĐ°ĐąĐģиŅ в йаСĐĩ
dbExecute(con, statement = read_file('create_db_data.sql'))
dbExecute(con, statement = read_file('create_db_state.sql'))
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĢāĻžāĻāĻļāĻ¨ āĻ˛ā§āĻāĻž
āĻāĻŽāĻ°āĻž āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻāĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋāĨ¤ āĻāĻāĻ¨ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻĄā§āĻāĻž āĻĒāĻĄāĻŧāĻ¤ā§ āĻāĻŦāĻ āĻ˛āĻŋāĻāĻ¤ā§ āĻĢāĻžāĻāĻļāĻ¨ āĻ˛āĻŋāĻāĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻĨā§āĻā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°ā§āĻ¨
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĢāĻžāĻāĻļāĻ¨ āĻā§āĻĄ
# ###########################################################
# Function for work bot with database
# ĐŋĐžĐģŅŅиŅŅ ŅĐĩĐēŅŅĐĩĐĩ ŅĐžŅŅĐžŅĐŊиĐĩ ŅĐ°ŅĐ°
get_state <- function(chat_id) {
con <- dbConnect(SQLite(), cfg$db_settings$db_path)
chat_state <- dbGetQuery(con, str_interp("SELECT state FROM chat_state WHERE chat_id == ${chat_id}"))$state
return(unlist(chat_state))
dbDisconnect(con)
}
# ŅŅŅĐ°ĐŊОвиŅŅ ŅĐĩĐēŅŅĐĩĐĩ ŅĐžŅŅĐžŅĐŊиĐĩ ŅĐ°ŅĐ°
set_state <- function(chat_id, state) {
con <- dbConnect(SQLite(), cfg$db_settings$db_path)
# upsert ŅĐžŅŅĐžŅĐŊиĐĩ ŅĐ°ŅĐ°
dbExecute(con,
str_interp("
INSERT INTO chat_state (chat_id, state)
VALUES(${chat_id}, '${state}')
ON CONFLICT(chat_id)
DO UPDATE SET state='${state}';
")
)
dbDisconnect(con)
}
# СаĐŋиŅŅ ĐŋĐžĐģŅŅĐĩĐŊĐŊŅŅ
Đ´Đ°ĐŊĐŊŅŅ
в йаСŅ
set_chat_data <- function(chat_id, field, value) {
con <- dbConnect(SQLite(), cfg$db_settings$db_path)
# upsert ŅĐžŅŅĐžŅĐŊиĐĩ ŅĐ°ŅĐ°
dbExecute(con,
str_interp("
INSERT INTO chat_data (chat_id, ${field})
VALUES(${chat_id}, '${value}')
ON CONFLICT(chat_id)
DO UPDATE SET ${field}='${value}';
")
)
dbDisconnect(con)
}
# read chat data
get_chat_data <- function(chat_id, field) {
con <- dbConnect(SQLite(), cfg$db_settings$db_path)
# upsert ŅĐžŅŅĐžŅĐŊиĐĩ ŅĐ°ŅĐ°
data <- dbGetQuery(con,
str_interp("
SELECT ${field}
FROM chat_data
WHERE chat_id = ${chat_id};
")
)
dbDisconnect(con)
return(data[[field]])
}
āĻāĻŽāĻ°āĻž 4 āĻāĻŋ āĻ¸āĻšāĻ āĻĢāĻžāĻāĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋ:
get_state()
- āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĨā§āĻā§ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻā§āĻ¯āĻžāĻ āĻ āĻŦāĻ¸ā§āĻĨāĻž āĻĒāĻžāĻ¨set_state()
â āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻā§āĻ¯āĻžāĻā§āĻ° āĻ āĻŦāĻ¸ā§āĻĨāĻž āĻ˛āĻŋāĻā§āĻ¨get_chat_data()
- āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻĄā§āĻāĻž āĻā§āĻ°āĻšāĻŖ āĻāĻ°ā§āĻ¨set_chat_data()
- āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻāĻžāĻ āĻĨā§āĻā§ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ¤āĻĨā§āĻ¯ āĻ°ā§āĻāĻ°ā§āĻĄ āĻāĻ°ā§āĻ¨
āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĢāĻžāĻāĻļāĻ¨ āĻŦā§āĻļ āĻ¸āĻšāĻ, āĻ¤āĻžāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻĒāĻĄāĻŧā§ dbGetQuery()
, āĻŦāĻž āĻĒā§āĻ°āĻ¤āĻŋāĻļā§āĻ°ā§āĻ¤āĻŋāĻŦāĻĻā§āĻ§ UPSERT
āĻĢāĻžāĻāĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ
āĻĒāĻžāĻ°ā§āĻļāĻ¨ (āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻĄā§āĻāĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻŦāĻž āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻ¨āĻ¤ā§āĻ¨ āĻĄā§āĻāĻž āĻ˛ā§āĻāĻž) dbExecute()
.
UPSERT āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ āĻ¨āĻŋāĻŽā§āĻ¨āĻ°ā§āĻĒ:
INSERT INTO chat_data (chat_id, ${field})
VALUES(${chat_id}, '${value}')
ON CONFLICT(chat_id)
DO UPDATE SET ${field}='${value}';
āĻ¸ā§āĻā§āĻ˛ā§. āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻŦāĻŋāĻ˛ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ chat_id āĻāĻāĻāĻŋ āĻ¸ā§āĻŦāĻ¤āĻ¨ā§āĻ¤ā§āĻ°āĻ¤āĻž āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻāĻā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻā§āĨ¤ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻāĻāĻžāĻŦā§, āĻāĻŽāĻ°āĻž āĻā§āĻŦāĻŋāĻ˛ā§ āĻ¤āĻĨā§āĻ¯ āĻ¯ā§āĻ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋ, āĻāĻŦāĻ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻā§āĻ¯āĻžāĻā§āĻ° āĻĄā§āĻāĻž āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻĨāĻžāĻāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻĒāĻžāĻ, āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻŽāĻ°āĻž āĻā§āĻŦāĻ˛ āĻāĻ āĻā§āĻ¯āĻžāĻā§āĻ° āĻ¤āĻĨā§āĻ¯ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻŋāĨ¤
āĻāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻ°āĻž āĻāĻ āĻĢāĻžāĻāĻļāĻ¨āĻā§āĻ˛āĻŋ āĻŦāĻā§āĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻŦāĻ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦāĨ¤
āĻŦāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ
āĻāĻŽāĻžāĻĻā§āĻ° āĻŦāĻ āĻ¤ā§āĻ°āĻŋāĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ§āĻžāĻĒ āĻšāĻ˛ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻĨā§āĻā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°ā§āĻ¨
āĻŦāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻā§āĻĄ
# ###########################################################
# bot methods
# start dialog
start <- function(bot, update) {
#
# Send query
bot$sendMessage(update$message$chat_id,
text = "ĐвĐĩди ŅвОŅ иĐŧŅ")
# ĐŋĐĩŅĐĩĐēĐģŅŅĐ°ĐĩĐŧ ŅĐžŅŅĐžŅĐŊиĐĩ диаĐģĐžĐŗĐ° в ŅĐĩĐļиĐŧ ĐžĐļидаĐŊиŅ ввОда иĐŧĐĩĐŊи
set_state(chat_id = update$message$chat_id, state = 'wait_name')
}
# get current chat state
state <- function(bot, update) {
chat_state <- get_state(update$message$chat_id)
# Send state
bot$sendMessage(update$message$chat_id,
text = unlist(chat_state))
}
# reset dialog state
reset <- function(bot, update) {
set_state(chat_id = update$message$chat_id, state = 'start')
}
# enter username
enter_name <- function(bot, update) {
uname <- update$message$text
# Send message with name
bot$sendMessage(update$message$chat_id,
text = paste0(uname, ", ĐŋŅиŅŅĐŊĐž ĐŋОСĐŊĐ°ĐēĐžĐŧиŅŅŅ, Ņ йОŅ!"))
# ĐĐ°ĐŋиŅŅваĐĩĐŧ иĐŧŅ в ĐŗĐģОйаĐģŅĐŊŅŅ ĐŋĐĩŅĐĩĐŧĐĩĐŊĐŊŅŅ
#username <<- uname
set_chat_data(update$message$chat_id, 'name', uname)
# ĐĄĐŋŅавŅиваĐĩĐŧ вОСŅĐ°ŅŅ
bot$sendMessage(update$message$chat_id,
text = "ĐĄĐēĐžĐģŅĐēĐž ŅĐĩĐąĐĩ ĐģĐĩŅ?")
# ĐĐĩĐŊŅĐĩĐŧ ŅĐžŅŅĐžŅĐŊиĐĩ ĐŊĐ° ĐžĐļидаĐŊиĐĩ ввОда иĐŧĐĩĐŊи
set_state(chat_id = update$message$chat_id, state = 'wait_age')
}
# enter user age
enter_age <- function(bot, update) {
uage <- as.numeric(update$message$text)
# ĐŋŅОвĐĩŅŅĐĩĐŧ ĐąŅĐģĐž ввĐĩĐ´ĐĩĐŊĐž ŅиŅĐģĐž иĐģи ĐŊĐĩŅ
if ( is.na(uage) ) {
# ĐĩŅĐģи ввĐĩĐ´ĐĩĐŊĐž ĐŊĐĩ ŅиŅĐģĐž ŅĐž ĐŋĐĩŅĐĩŅĐŋŅĐ°ŅиваĐĩĐŧ вОСŅĐ°ŅŅ
bot$sendMessage(update$message$chat_id,
text = "ĐĸŅ ввŅĐģ ĐŊĐĩĐēĐžŅŅĐĩĐēŅĐŊŅĐĩ Đ´Đ°ĐŊĐŊŅĐĩ, ввĐĩди ŅиŅĐģĐž")
} else {
# ĐĩŅĐģи ввĐĩĐ´ĐĩĐŊĐž ŅиŅĐģĐž ŅООйŅĐ°ĐĩĐŧ ŅŅĐž вОСŅĐ°ŅŅ ĐŋŅиĐŊŅŅ
bot$sendMessage(update$message$chat_id,
text = "ĐĐ, вОСŅĐ°ŅŅ ĐŋŅиĐŊŅŅ")
# СаĐŋиŅŅваĐĩĐŧ ĐŗĐģОйаĐģŅĐŊŅŅ ĐŋĐĩŅĐĩĐŧĐĩĐŊĐŊŅŅ Ņ вОСŅĐ°ŅŅĐžĐŧ
#userage <<- uage
set_chat_data(update$message$chat_id, 'age', uage)
# ŅООйŅĐ°ĐĩĐŧ ĐēĐ°ĐēиĐĩ Đ´Đ°ĐŊĐŊŅĐĩ ĐąŅĐģи ŅОйŅĐ°ĐŊŅ
username <- get_chat_data(update$message$chat_id, 'name')
userage <- get_chat_data(update$message$chat_id, 'age')
bot$sendMessage(update$message$chat_id,
text = paste0("ĐĸĐĩĐąŅ СОвŅŅ ", username, " и ŅĐĩĐąĐĩ ", userage, " ĐģĐĩŅ. ĐŅĐ´ĐĩĐŧ СĐŊĐ°ĐēĐžĐŧŅ"))
# вОСвŅĐ°ŅĐ°ĐĩĐŧ диаĐģĐžĐŗ в иŅŅ
ОдĐŊĐžĐĩ ŅĐžŅŅĐžŅĐŊиĐĩ
set_state(chat_id = update$message$chat_id, state = 'start')
}
}
āĻāĻŽāĻ°āĻž 5 āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋ:
- āĻļā§āĻ°ā§ āĻāĻ°ā§āĻ¨ - āĻāĻāĻāĻŋ āĻĄāĻžāĻ¯āĻŧāĻžāĻ˛āĻ āĻļā§āĻ°ā§ āĻāĻ°ā§āĻ¨
- āĻ°āĻžāĻˇā§āĻā§āĻ° â āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻā§āĻ¯āĻžāĻ āĻ āĻŦāĻ¸ā§āĻĨāĻž āĻĒāĻžāĻ¨
- āĻ°āĻŋāĻ¸ā§āĻ â āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻā§āĻ¯āĻžāĻ āĻ āĻŦāĻ¸ā§āĻĨāĻž āĻ°āĻŋāĻ¸ā§āĻ āĻāĻ°ā§āĻ¨
- enter_name â āĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻžāĻŽ āĻāĻŋāĻā§āĻāĻžāĻ¸āĻž āĻāĻ°ā§
- enter_age â āĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻŦāĻ¯āĻŧāĻ¸ āĻāĻžāĻ¨āĻ¤ā§ āĻāĻžāĻ¯āĻŧ
āĻĒāĻĻā§āĻ§āĻ¤āĻŋ start
āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻžāĻŽ āĻāĻŋāĻā§āĻāĻžāĻ¸āĻž āĻāĻ°ā§, āĻāĻŦāĻ āĻā§āĻ¯āĻžāĻā§āĻ° āĻ
āĻŦāĻ¸ā§āĻĨāĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§ āĻ
āĻĒā§āĻā§āĻˇāĻž_āĻ¨āĻžāĻŽ, āĻ
āĻ°ā§āĻĨāĻžā§ āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻžāĻŽ āĻ˛ā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŦāĻžāĻāĨ¤
āĻāĻ° āĻĒāĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻ¨āĻžāĻŽ āĻĒāĻžāĻ āĻžāĻ¨ āĻāĻŦāĻ āĻāĻāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧ enter_name
, āĻŦāĻ āĻāĻĒāĻ¨āĻžāĻā§ āĻ
āĻā§āĻ¯āĻ°ā§āĻĨāĻ¨āĻž āĻāĻžāĻ¨āĻžāĻ¯āĻŧ, āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ¨āĻžāĻŽ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻ˛ā§āĻā§ āĻāĻŦāĻ āĻā§āĻ¯āĻžāĻāĻāĻŋ āĻ°āĻžāĻā§āĻ¯ā§ āĻ¸ā§āĻ¯ā§āĻāĻ āĻāĻ°ā§ āĻ
āĻĒā§āĻā§āĻˇāĻž_āĻŦāĻ¯āĻŧāĻ¸.
āĻāĻ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§, āĻŦāĻ āĻāĻļāĻž āĻāĻ°ā§ āĻ¯ā§ āĻāĻĒāĻ¨āĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻŦāĻ¯āĻŧāĻ¸ā§ āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°āĻŦā§āĻ¨āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻŦāĻ¯āĻŧāĻ¸ āĻĒāĻžāĻ āĻžāĻ¨, āĻŦāĻ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻ¨āĻŽā§āĻŦāĻ°ā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻāĻŋāĻā§ āĻĒāĻžāĻ ā§āĻ¯ āĻĒāĻžāĻ āĻžāĻ¨ āĻ¤āĻŦā§ āĻāĻāĻŋ āĻŦāĻ˛āĻŦā§: ĐĸŅ ввŅĐģ ĐŊĐĩĐēĐžŅŅĐĩĐēŅĐŊŅĐĩ Đ´Đ°ĐŊĐŊŅĐĩ, ввĐĩди ŅиŅĐģĐž
, āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻĄā§āĻāĻž āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻŦā§āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻ¨āĻŽā§āĻŦāĻ° āĻĒāĻžāĻ āĻžāĻ¨, āĻŦāĻ āĻ°āĻŋāĻĒā§āĻ°ā§āĻ āĻāĻ°āĻŦā§ āĻ¯ā§ āĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻŦāĻ¯āĻŧāĻ¸ āĻ¸ā§āĻŦā§āĻāĻžāĻ° āĻāĻ°ā§āĻā§, āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻĄā§āĻāĻž āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻ˛āĻŋāĻāĻŦā§, āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻ āĻĨā§āĻā§ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĄā§āĻāĻž āĻ°āĻŋāĻĒā§āĻ°ā§āĻ āĻāĻ°āĻŦā§ āĻāĻŦāĻ āĻā§āĻ¯āĻžāĻ āĻ¸ā§āĻā§āĻāĻāĻŋāĻā§ āĻ¤āĻžāĻ° āĻāĻ¸āĻ˛ āĻ
āĻŦāĻ¸ā§āĻĨāĻžāĻ¨ā§ āĻĢāĻŋāĻ°āĻŋāĻ¯āĻŧā§ āĻĻā§āĻŦā§, āĻ¯ā§āĻŽāĻ¨ āĻāĻŋ start
.
āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§ āĻĢā§āĻ¨ āĻāĻ°ā§ state
āĻāĻĒāĻ¨āĻŋ āĻ¯ā§ āĻā§āĻ¨ā§ āĻ¸āĻŽāĻ¯āĻŧ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻā§āĻ¯āĻžāĻ āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻžāĻ¸ āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻāĻŦāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ reset
āĻā§āĻ¯āĻžāĻāĻāĻŋāĻā§ āĻ¤āĻžāĻ° āĻāĻ¸āĻ˛ āĻ
āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻĢāĻŋāĻ°āĻŋāĻ¯āĻŧā§ āĻĻāĻŋāĻ¨āĨ¤
āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°
āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻŦāĻ āĻ¤ā§āĻ°āĻŋāĻ° āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻ āĻāĻļāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋāĨ¤ āĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§ āĻ¯ā§ āĻŦāĻāĻāĻŋ āĻŦā§āĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§ āĻ¯ā§ āĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻ āĻĨā§āĻā§ āĻā§āĻ¨ āĻ¤āĻĨā§āĻ¯ āĻāĻļāĻž āĻāĻ°ā§ āĻāĻŦāĻ āĻā§āĻāĻžāĻŦā§ āĻāĻāĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻž āĻāĻāĻŋāĻ¤āĨ¤
āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§
āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻā§āĻĄ:
# ###########################################################
# message state filters
# ŅиĐģŅŅŅ ŅООйŅĐĩĐŊиК в ŅĐžŅŅĐžŅĐŊии ĐžĐļидаĐŊиŅ иĐŧĐĩĐŊи
MessageFilters$wait_name <- BaseFilter(function(message) {
get_state( message$chat_id ) == "wait_name"
}
)
# ŅиĐģŅŅŅ ŅООйŅĐĩĐŊиК в ŅĐžŅŅĐžŅĐŊии ĐžĐļидаĐŊиŅ вОСŅĐ°ŅŅĐ°
MessageFilters$wait_age <- BaseFilter(function(message) {
get_state( message$chat_id ) == "wait_age"
}
)
āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°ā§āĻŦā§ āĻ˛ā§āĻāĻž āĻĢāĻžāĻāĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ get_state()
, āĻā§āĻ¯āĻžāĻā§āĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ
āĻŦāĻ¸ā§āĻĨāĻžāĻ° āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯āĨ¤ āĻāĻ āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° 1āĻāĻŋ āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻ, āĻā§āĻ¯āĻžāĻ āĻāĻāĻĄāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻ
āĻĒā§āĻā§āĻˇāĻž_āĻ¨āĻžāĻŽ āĻ¯āĻāĻ¨ āĻā§āĻ¯āĻžāĻ āĻāĻāĻāĻŋ āĻ
āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻĨāĻžāĻā§ āĻ¤āĻāĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°ā§ā§ˇ wait_name
, āĻāĻŦāĻ āĻ¸ā§āĻ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻ
āĻĒā§āĻā§āĻˇāĻž_āĻŦāĻ¯āĻŧāĻ¸ āĻ¯āĻāĻ¨ āĻā§āĻ¯āĻžāĻ āĻāĻāĻāĻŋ āĻ
āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻĨāĻžāĻā§ āĻ¤āĻāĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°ā§ā§ˇ wait_age
.
āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°
āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻ¸āĻš āĻĢāĻžāĻāĻ˛ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°.āĻāĻ°, āĻāĻŦāĻ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻā§āĻĄ āĻāĻā§:
# ###########################################################
# handlers
# command handlers
start_h <- CommandHandler('start', start)
state_h <- CommandHandler('state', state)
reset_h <- CommandHandler('reset', reset)
# message handlers
## !MessageFilters$command - ОСĐŊĐ°ŅĐ°ĐĩŅ ŅŅĐž ĐēĐžĐŧĐ°ĐŊĐ´Ņ Đ´Đ°ĐŊĐŊŅĐĩ ОйŅайОŅŅиĐēи ĐŊĐĩ ОйŅайаŅŅваŅŅ,
## ŅĐžĐģŅĐēĐž ŅĐĩĐēŅŅОвŅĐĩ ŅООйŅĐĩĐŊиŅ
wait_age_h <- MessageHandler(enter_age, MessageFilters$wait_age & !MessageFilters$command)
wait_name_h <- MessageHandler(enter_name, MessageFilters$wait_name & !MessageFilters$command)
āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°āĻā§āĻ˛āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻĄāĻžāĻ¯āĻŧāĻžāĻ˛āĻ āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻŦā§, āĻāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ¸ā§āĻ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻāĻŋ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°āĻ¤ā§āĨ¤
āĻāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻ°āĻž āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻ§āĻžāĻĒā§ āĻ¤ā§āĻ°āĻŋ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ 2āĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻ¯ā§āĻ āĻāĻ°āĻŋ !MessageFilters$command
, āĻ¯āĻžāĻ¤ā§ āĻāĻŽāĻ°āĻž āĻ¯ā§āĻā§āĻ¨ā§ āĻā§āĻ¯āĻžāĻ āĻ¸ā§āĻā§āĻā§ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤
āĻŦāĻ āĻ˛āĻā§āĻ āĻā§āĻĄ
āĻāĻāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŦāĻāĻŋāĻā§ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻā§, āĻŦāĻāĻāĻŋ āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻā§āĻĄāĻāĻŋ āĻĢāĻžāĻāĻ˛āĻāĻŋāĻ¤ā§ āĻ°āĻ¯āĻŧā§āĻā§ āĻŦāĻ.āĻāĻ°.
library(telegram.bot)
library(tidyverse)
library(RSQLite)
library(DBI)
library(configr)
# ĐŋĐĩŅĐĩŅ
ОдиĐŧ в ĐŋĐ°ĐŋĐēŅ ĐŋŅĐžĐĩĐēŅĐ°
setwd(Sys.getenv('TG_BOT_PATH'))
# ŅиŅĐ°ĐĩĐŧ ĐēĐžĐŊŅиĐŗ
cfg <- read.config('config.cfg')
# ŅОСдаŅĐŧ ŅĐēСĐĩĐŧĐŋĐģŅŅ йОŅĐ°
updater <- Updater(cfg$bot_settings$bot_token)
# ĐĐ°ĐŗŅŅСĐēĐ° ĐēĐžĐŧĐŋĐžĐŊĐĩĐŊŅОв йОŅĐ°
source('db_bot_function.R') # ŅŅĐŊĐēŅии Đ´ĐģŅ ŅайОŅŅ Ņ ĐĐ
source('bot_methods.R') # ĐŧĐĩŅОдŅ йОŅĐ°
source('message_filters.R') # ŅиĐģŅŅŅŅ ŅООйŅĐĩĐŊиК
source('handlers.R') # ОйŅайОŅŅиĐēи ŅООйŅĐĩĐŊиК
# ĐОйавĐģŅĐĩĐŧ ОйŅайОŅŅиĐēи в диŅĐŋĐĩŅŅĐĩŅ
updater <- updater +
start_h +
wait_age_h +
wait_name_h +
state_h +
reset_h
# ĐĐ°ĐŋŅŅĐēĐ°ĐĩĐŧ йОŅĐ°
updater$start_polling()
āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻŽāĻ°āĻž āĻāĻ āĻŦāĻāĻāĻŋ āĻĒā§āĻ¯āĻŧā§āĻāĻŋ:
āĻ¯ā§ āĻā§āĻ¨ āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ /state
āĻāĻŽāĻ°āĻž āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻā§āĻ¯āĻžāĻ āĻ
āĻŦāĻ¸ā§āĻĨāĻž āĻāĻŦāĻ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĒā§āĻ°āĻļā§āĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ /reset
āĻā§āĻ¯āĻžāĻāĻāĻŋāĻā§ āĻ¤āĻžāĻ° āĻāĻ¸āĻ˛ āĻ
āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻĢāĻŋāĻ°āĻŋāĻ¯āĻŧā§ āĻĻāĻŋāĻ¨ āĻāĻŦāĻ āĻāĻŦāĻžāĻ° āĻ¸āĻāĻ˛āĻžāĻĒ āĻļā§āĻ°ā§ āĻāĻ°ā§āĻ¨āĨ¤
āĻāĻĒāĻ¸āĻāĻšāĻžāĻ°
āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§, āĻāĻŽāĻ°āĻž āĻā§āĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻŦāĻā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻā§āĻāĻžāĻŦā§ āĻā§āĻ¯āĻžāĻ āĻ¸ā§āĻā§āĻ āĻ°ā§āĻāĻ°ā§āĻĄ āĻāĻ°ā§ āĻā§āĻ°āĻŽāĻŋāĻ āĻ¯ā§āĻā§āĻ¤āĻŋāĻ āĻ¸āĻāĻ˛āĻžāĻĒ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ āĻ¤āĻž āĻā§āĻāĻā§ āĻŦā§āĻ° āĻāĻ°ā§āĻāĻŋāĨ¤
āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻŽāĻ°āĻž āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻāĻĻāĻŋāĻŽ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻāĻŋ āĻĻā§āĻā§āĻāĻŋ, āĻ¯āĻžāĻ¤ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻĒāĻā§āĻˇā§ āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻŦāĻ āĻ¤ā§āĻ°āĻŋāĻ° āĻ§āĻžāĻ°āĻŖāĻžāĻāĻŋ āĻŦā§āĻāĻž āĻ¸āĻšāĻ āĻšāĻŦā§; āĻŦāĻžāĻ¸ā§āĻ¤āĻŦā§, āĻāĻĒāĻ¨āĻŋ āĻāĻ°āĻ āĻāĻāĻŋāĻ˛ āĻ¸āĻāĻ˛āĻžāĻĒ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻāĻ āĻ¸āĻŋāĻ°āĻŋāĻā§āĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§, āĻāĻŽāĻ°āĻž āĻļāĻŋāĻāĻŦ āĻāĻŋāĻāĻžāĻŦā§ āĻŦāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ āĻ§āĻŋāĻāĻžāĻ° āĻ¸ā§āĻŽāĻŋāĻ¤ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com